仿雷速体育app踢足球tab
MyTabLayout
MyTabLayout用法参照BaseLibrary的Demo
GitHub仓库地址
效果图
引入
gradle
allprojects {repositories {maven { url 'https://jitpack.io' }}
}implementation 'com.github.DL-ZhangTeng:BaseLibrary:2.3.0'
属性
MyTabLayout属性名 | 描述:可参考原生控件TabLayout |
---|---|
tabMyGravity | GRAVITY_FILL充满屏幕、GRAVITY_CENTER居中 |
tabMyMode | MODE_SCROLLABLE可滚动tab、MODE_FIXED固定tab |
tabMyTypeface | 未被选中tab文本样式 |
tabMySelectedTypeface | 被选中tab文本样式 |
tabMyPaddingStart | 居左Padding |
tabMyTextColor | 未选中文本颜色 |
tabMyPaddingEnd | 居右Padding |
tabMySelectedTextColor | 被选中文本颜色 |
tabMyMaxWidth | 最大宽度 |
tabMyBackground | 背景色 |
tabMyTextAppearance | 文本样式 |
tabMyContentStart | tabs距TabLayout开始位置的偏移量,只有tabMyMode |
tabMyMinWidth | 最小宽度 |
tabMyPaddingBottom | 距底部Padding |
tabMyPaddingTop | 距顶部Padding |
tabMyPadding | Padding |
tabMyTextIconGap | Text与Icon之间的margin |
tabMyViewNumber | tab数量 |
tabMySelectedTextSize | 被选中文字大小 |
tabMyTextSize | 未选中文字大小 |
tabMyTabViewSelf | TabView自定义时宽度自适应 |
tabMyIndicatorWidth | 指示器宽度(设置宽度后指示器Margin失效) |
tabMyIndicatorHeight | 指示器高度 |
tabMyIndicatorMarginLeft | 指示器居左Margin |
tabMyIndicatorMarginTop | 指示器居顶部Margin |
tabMyIndicatorMarginRight | 指示器居右Margin |
tabMyIndicatorMarginBottom | 指示器居底部Margin |
tabMyIndicatorSelfFit | 指示器宽度自适应文本宽度(默认false) |
tabMyIndicatorMarginBottomSelfFit | 指示器自适应文本底部的距离(tabMyIndicatorSelfFit为true时生效,默认false) |
tabMyIndicatorBottomLayer | 指示器置于文本底部(默认false) |
tabMyIndicatorColor | 指示器颜色 |
tabMyIndicatorRoundRadius | 指示器圆角 |
tabMyIndicatorDrawable | 图片指示器,支持drawable与mipmap |
tabMyIndicatorVerticalOffsets | 指示器垂直滚动,String数组对应每一个tab的垂直偏移量(0.0:不进行垂直偏移;1.0:垂直偏移tab高度-指示器高度-垂直Margin) |
tabMyIndicatorHorizontalOffsets | 指示器水平滚动,String数组对应每一个tab的水平偏移量(0.0:不进行水平偏移;1.0:水平移tab宽度-指示器宽度-水平Margin) |
示例
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="false"app:tabMyIndicatorColor="#ff000000"app:tabMyIndicatorHeight="2dp"app:tabMyIndicatorMarginBottomSelfFit="false"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="false"app:tabMyMode="MODE_SCROLLABLE"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout1"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="false"app:tabMyIndicatorColor="#00000000"app:tabMyIndicatorDrawable="@mipmap/ic_delete"app:tabMyIndicatorHeight="15dp"app:tabMyIndicatorMarginBottomSelfFit="false"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="false"app:tabMyIndicatorWidth="15dp"app:tabMyMode="MODE_SCROLLABLE"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout2"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="false"app:tabMyIndicatorColor="#ff000000"app:tabMyIndicatorHeight="2dp"app:tabMyIndicatorMarginBottomSelfFit="false"app:tabMyIndicatorMarginLeft="5dp"app:tabMyIndicatorMarginRight="5dp"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="false"app:tabMyMode="MODE_SCROLLABLE"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout3"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="true"app:tabMyIndicatorColor="#ff000000"app:tabMyIndicatorHeight="2dp"app:tabMyIndicatorMarginBottomSelfFit="true"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="true"app:tabMyMode="MODE_SCROLLABLE"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout4"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="true"app:tabMyIndicatorColor="#ff000000"app:tabMyIndicatorHeight="2dp"app:tabMyIndicatorMarginBottomSelfFit="true"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="true"app:tabMyMode="MODE_FIXED"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL"app:tabMyViewNumber="5" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout5"android:layout_width="match_parent"android:layout_height="40dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="true"app:tabMyIndicatorColor="#ff000000"app:tabMyIndicatorHeight="2dp"app:tabMyIndicatorMarginBottomSelfFit="true"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="true"app:tabMyMode="MODE_FIXED"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="26sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL"app:tabMyViewNumber="5" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout6"android:layout_width="match_parent"android:layout_height="42dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="false"app:tabMyIndicatorColor="#00000000"app:tabMyIndicatorDrawable="@mipmap/icon_match_event_goal_mini"app:tabMyIndicatorHeight="10dp"app:tabMyIndicatorHorizontalOffsets="@array/HorizontalOffset"app:tabMyIndicatorMarginBottomSelfFit="false"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="false"app:tabMyIndicatorVerticalOffsets="@array/VerticalOffset"app:tabMyIndicatorWidth="10dp"app:tabMyMode="MODE_FIXED"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL"app:tabMyViewNumber="5" /><com.zhangteng.base.widget.MyTabLayoutandroid:id="@+id/tab_layout7"android:layout_width="match_parent"android:layout_height="42dp"app:tabMyBackground="@color/colorWhite"app:tabMyIndicatorBottomLayer="false"app:tabMyIndicatorColor="#00000000"app:tabMyIndicatorDrawable="@mipmap/icon_match_event_goal_mini"app:tabMyIndicatorHeight="10dp"app:tabMyIndicatorHorizontalOffsets="@array/HorizontalOffset"app:tabMyIndicatorMarginBottomSelfFit="false"app:tabMyIndicatorRoundRadius="2dp"app:tabMyIndicatorSelfFit="false"app:tabMyIndicatorVerticalOffsets="@array/VerticalOffset"app:tabMyIndicatorWidth="10dp"app:tabMyMode="MODE_FIXED"app:tabMyPaddingEnd="18dp"app:tabMyPaddingStart="18dp"app:tabMySelectedTextColor="#222222"app:tabMySelectedTextSize="16sp"app:tabMySelectedTypeface="NORMAL"app:tabMyTabViewSelf="true"app:tabMyTextColor="#999999"app:tabMyTextSize="14sp"app:tabMyTypeface="NORMAL"app:tabMyViewNumber="5" /><androidx.viewpager.widget.ViewPagerandroid:id="@+id/vp"android:layout_width="match_parent"android:layout_height="match_parent" />
</LinearLayout>
package com.zhangteng.baselibrary.activityimport android.graphics.drawable.AnimationDrawable
import android.os.Bundle
import android.widget.ImageView
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import com.zhangteng.base.adapter.CommonFragmentAdapter
import com.zhangteng.base.base.BaseActivity
import com.zhangteng.base.widget.MyTabLayout
import com.zhangteng.base.widget.MyTabLayoutMediator
import com.zhangteng.baselibrary.R
import com.zhangteng.baselibrary.fragment.BaseDemoFragmentclass TabLayoutActivity : BaseActivity() {private var tab_layout: MyTabLayout? = nullprivate var tab_layout1: MyTabLayout? = nullprivate var tab_layout2: MyTabLayout? = nullprivate var tab_layout3: MyTabLayout? = nullprivate var tab_layout4: MyTabLayout? = nullprivate var tab_layout5: MyTabLayout? = nullprivate var tab_layout6: MyTabLayout? = nullprivate var tab_layout7: MyTabLayout? = nullprivate var vp: ViewPager? = nullprivate val titleList: Array<String?> =arrayOf("111111", "111111", "111111", "111111", "111111")override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_tablayout)}override fun initView() {tab_layout = findViewById(R.id.tab_layout)tab_layout1 = findViewById(R.id.tab_layout1)tab_layout2 = findViewById(R.id.tab_layout2)tab_layout3 = findViewById(R.id.tab_layout3)tab_layout4 = findViewById(R.id.tab_layout4)tab_layout5 = findViewById(R.id.tab_layout5)tab_layout6 = findViewById(R.id.tab_layout6)tab_layout7 = findViewById(R.id.tab_layout7)vp = findViewById(R.id.vp)val fragments = ArrayList<Fragment>()fragments.add(BaseDemoFragment())fragments.add(BaseDemoFragment())fragments.add(BaseDemoFragment())fragments.add(BaseDemoFragment())fragments.add(BaseDemoFragment())vp?.adapter =CommonFragmentAdapter(supportFragmentManager,titleList,fragments)tab_layout?.setupWithViewPager(vp)tab_layout1?.setupWithViewPager(vp)tab_layout2?.setupWithViewPager(vp)tab_layout3?.setupWithViewPager(vp)tab_layout4?.setupWithViewPager(vp)tab_layout5?.setupWithViewPager(vp)//使用newTab()自定义Tabfor (position in titleList.indices) {val tab = tab_layout6?.newTab()tab?.let {val imageView = ImageView(this@TabLayoutActivity)setAnimation(imageView, position)tab.setCustomView(imageView)tab_layout6?.addTab(tab)if (position == 0) {val animationDrawable =(tab.getCustomView() as ImageView).drawable as AnimationDrawable?if (animationDrawable != null && !animationDrawable.isRunning) {animationDrawable.start()}}}}vp?.addOnPageChangeListener(MyTabLayout.TabLayoutOnPageChangeListener(tab_layout6))tab_layout6?.addOnTabSelectedListener(object : MyTabLayout.OnTabSelectedListener {override fun onTabSelected(tab: MyTabLayout.Tab?) {tab?.let {vp?.currentItem = tab.getPosition()val animationDrawable =(tab.getCustomView() as ImageView).drawable as AnimationDrawable?if (animationDrawable != null && !animationDrawable.isRunning) {animationDrawable.start()}}}override fun onTabUnselected(tab: MyTabLayout.Tab?) {tab?.let {setAnimation(tab.getCustomView() as ImageView, tab.getPosition())}}override fun onTabReselected(tab: MyTabLayout.Tab?) {tab?.let {setAnimation(tab.getCustomView() as ImageView, tab.getPosition())}}})//使用MyTabLayoutMediator自定义TabMyTabLayoutMediator(tab_layout7!!,vp!!,object : MyTabLayoutMediator.TabConfigurationStrategy {override fun onConfigureTab(tab: MyTabLayout.Tab, position: Int) {val imageView = ImageView(this@TabLayoutActivity)setAnimation(imageView, position)tab.setCustomView(imageView)if (position == 0) {val animationDrawable =(tab.getCustomView() as ImageView).drawable as AnimationDrawable?if (animationDrawable != null && !animationDrawable.isRunning) {animationDrawable.start()}}}}).attach()tab_layout7?.addOnTabSelectedListener(object : MyTabLayout.OnTabSelectedListener {override fun onTabSelected(tab: MyTabLayout.Tab?) {tab?.let {val animationDrawable =(tab.getCustomView() as ImageView).drawable as AnimationDrawable?if (animationDrawable != null && !animationDrawable.isRunning) {animationDrawable.start()}}}override fun onTabUnselected(tab: MyTabLayout.Tab?) {tab?.let {setAnimation(tab.getCustomView() as ImageView, tab.getPosition())}}override fun onTabReselected(tab: MyTabLayout.Tab?) {tab?.let {setAnimation(tab.getCustomView() as ImageView, tab.getPosition())}}})}override fun initData() {}private fun setAnimation(imageView: ImageView, position: Int) {when (position) {0 -> {imageView.setImageResource(R.drawable.tab_animation_1)}1 -> {imageView.setImageResource(R.drawable.tab_animation_2)}2 -> {imageView.setImageResource(R.drawable.tab_animation_3)}3 -> {imageView.setImageResource(R.drawable.tab_animation_4)}4 -> {imageView.setImageResource(R.drawable.tab_animation_5)}}}
}
足球Tab动画与偏移数组
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="true"><!-- animation-list 帧动画 --><!-- android:oneshot的值为 false代表播放多次,true代表只播放一次 --><!-- duration代表每张图片的播放时间 ,定义一个持续时间为50毫秒的动画帧 --><itemandroid:drawable="@mipmap/icon_match_1"android:duration="150" /><itemandroid:drawable="@mipmap/icon_match_2"android:duration="150" /><itemandroid:drawable="@mipmap/icon_match_3"android:duration="50" /><itemandroid:drawable="@mipmap/icon_match_4"android:duration="50" />
</animation-list>
<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="VerticalOffset"><item>0.258</item><item>0.258</item><item>0.254</item><item>0.760</item><item>0.258</item></string-array><string-array name="HorizontalOffset"><item>-0.058</item><item>-0.058</item><item>0.054</item><item>0.066</item><item>0.066</item></string-array>
</resources>
仿雷速体育app踢足球tab相关推荐
- android仿腾讯体育app,腾讯体育app
腾讯体育是由腾讯出品的体育视频类软件,在软件中用户可以体验到最好用的体育视频软件,在这里你能看到各类比赛全赛季的视频,软件还拥有世界顶级的转播技术和团队,高清.多角度.虚拟技术,轻松满足球迷各种需求. ...
- 学计算机学体育生闺女,古力:生个女儿一定学围棋 生个儿子就去踢足球
成都商报记者 张龑 摄影报道 核心提示 7夺围棋世界冠军的古力结婚了,这意味着他有了更多的责任. 婚后的古力做到了以家为重---"现在下完棋就回家,酒基本上不喝了,连唱歌这些娱乐都基本上取消 ...
- PP体育APP产品体验报告
1 产品概述 1.1 体验环境 设备:SMARTISAN M1 系统版本: Android 6.0.1 时间:2018.10 APP版本:V5.4.2 体验人:hungpn 1.2 产品简介 PP体育 ...
- 自定义view--仿照 体育app,股票,基金,电商,区块链APP 数据信息栏展示(还没写完)
我是个球迷,喜欢看各种篮球 足球比赛,所以手机里面也安装了各种体育类APP,之前就发现了一个有趣的自定义view,很多场景都能通用 比如: (虎扑)体育app,球队积分/比赛数据自定view 股票,基 ...
- android仿喜马拉雅APP状态栏,ReactNative+TypeScript仿喜马拉雅开发App(示例代码)
ReactNative+TypeScript仿喜马拉雅开发App 融合RN的跨平台能力+TS的全新开发体验 使用RN + TS开发听书App,从需求分析,到功能实现,一步步带领大家完成功能,学会如何解 ...
- 纸飞机飞向温暖,踢足球凝聚真情
8月6日,合肥工业大学软件学院西部之光,筑梦小队和残疾人服务站的老师以及残疾人学生在教室中开晨会.在会议中,老师们对前几日表现好的同学进行鼓励,对表现不好的同学进行批评指正他们的不足.在结束活动之后, ...
- 当会打王者荣耀的AI学会踢足球,一不小心拿下世界冠军!
难得的元旦小假期,没有什么比得上在慵懒的冬日艳阳下放松自己,拿起手机,叫上了许久未一起作战的小伙伴,到王者荣耀中激战了一番,仿佛又回到了当年那个年轻的自己. 厉害不,毕竟当年DD也是王者五十星的水平, ...
- android动画送礼物,Android仿直播类app赠送礼物功能
直播界面 实现的是播放本地的视频文件: /** * 直播界面,用于对接直播功能 */ public class LiveFrag extends Fragment { private ImageVie ...
- 小狗踢足球《即时通讯》
[即时通讯论坛]2013年10月17日,吹拂我的面颊,俯视山下,爸爸还真把妈妈叫来了,一路艰险,爸爸成了村里有名的即时通讯筢耳朵,白色的水鸟偶尔点一下水面,兰妮公主已经走得筋疲力尽,不时有垂钓者 ...
- 仿IOS介绍APP下载页源码
简介: 仿IOS介绍APP下载页源码 网盘下载地址: http://kekewangLuo.cc/etChSUGbyoU0 图片:
最新文章
- R语言命令行写linux,linux命令行下使用R语言绘图实例讲解
- mysql 与紫金桥_基于紫金桥组态软件与mysql数据库的连接简介
- boost::mp11::mp_find相关用法的测试程序
- .NET架构小技巧(2)——访问修饰符正确姿势
- [mybatis]Mapper XML Files_获取自增主键的值
- 不存在_施文忠 | ”存在“与“不存在”——巴蜀文明概论
- 关于增强(五)-Class Enhancement
- [Android] 年年有鱼手机主题
- c++ linux 获取毫秒_Linux c++获取本地毫秒级精确时间
- Flink : Flink JobManager报错 akka.pattern.AskTimeoutException: Ask timed out on
- 8.26~8.30-广州软件所-实习工作日记
- 高通又失一员大将,英特尔成功挖角高通CFO
- 物联网老年人健康管理系统源码
- 纵横iGoogle工具世界的程序发明王
- Switch模拟器调研
- FastqC结果简介
- android 加固服务器,服务器加固工具
- 后端接收Get请求与Post请求 参数示例
- phpwindexp.php,phpwind 5.0.1 Sql注射漏洞利用程序脚本安全 -电脑资料
- Label的属性、事件、方法