爱奇艺首页底部导航按钮android,仿爱奇艺/腾讯视频ViewPager导航条实现

仿爱奇艺/腾讯视频ViewPager导航条实现,支持自定义导航条高度,宽度,颜色变化,字体大小变化。支持多种滚动模式,支持自定义每个TabView的样式。项目地址:https://github.com/KCrason/DynamicPagerIndicator

a15c50810f6f

dynamic.gif

一、如何引入DynamicPagerIndicator?

在module的build.gradle 添加:

compile 'com.kcrason:dynamicpagerindicator:1.0.0'

3.0以上gradle版本为:

implementation 'com.kcrason:dynamicpagerindicator:1.0.0'

二、如何使用?

1、将DynamicPagerIndicator 添加到指定xml

android:id="@+id/dynamic_pager_indicator1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:indicatorLineScrollMode="dynamic"

app:pagerIndicatorMode="scrollable_center"

/>

2、将ViewPager对象设置给DynamicPagerIndicator

ViewPager viewPager = findViewById(R.id.view_pager);

DynamicPagerIndicator dynamicPagerIndicator = findViewById(R.id.dynamic_pager_indicator);

dynamicPagerIndicator.setViewPager(viewPager);

三、属性说明

pagerIndicatorMode : 指示器的显示模式,共有三种。

1、scrollable:适用于ViewPager的count较多时。可滑动。默认从左向右排列显示

2、scrollable_center:居中显示,适用于ViewPager的count较少时,且需要居中显示

3、fixed:均分模式,该模式下会平均分配TabView的宽度

tabPadding:其为TabView的左右内边距。

tabNormalTextSize:其为TabView中Title的文字正常状态文字大小。

tabSelectedTextSize:其为TabView中Title的文字选中状态文字大小。

tabNormalTextColor:其为TabView中Title的文字正常状态文字颜色。

tabSelectedTextColor:其为TabView中Title的文字选中状态文字颜色。

indicatorLineHeight:其为TabView下的导航条的高度。

indicatorLineWidth:其为TabView下的导航条的宽度。

indicatorLineRadius:其为TabView下的导航条的圆角,默认为0,即不绘制圆角。

indicatorLineStartColor:其为TabView下的导航条变化的开始颜色。如果不需要颜色变换效果,将indicatorLineStartColor和indicatorLineEndColor设置成一致即可。

indicatorLineEndColor:其为TabView下的导航条变化的结束颜色。如果不需要颜色变换效果,将indicatorLineStartColor和indicatorLineEndColor设置成一致即可。

indicatorLineMarginTop:其为TabView下的导航条的上边距。

indicatorLineMarginBottom:其为TabView下的导航条的下边距。

indicatorLineScrollMode:其为TabView下的导航条的滚动模式,共有两种

1、dynamic:即爱奇艺/腾讯视频那种可变化长度的效果。导航条长度、位置均变化。

2、transform:普通移动效果,导航条长度不变,位置变化。

四、自定义TabView(即自定义指示器的Item的样式)

1、创建一个类继承PagerTabView,重写initPagerTabView()方法去将自定义的View加入PagerTabView。并复写getTitleTextView()返回自定义View的TextView(该TextView用于显示指示器的标题,必不可少)。

public class CustomPagerTabView extends PageTabView {

private TextView mTextView;

public CustomPagerTabView(Context context) {

super(context);

}

.....省略部分构造方法....

/**

*自定义PagerTabView必须复写该方法返回一个TextView用于显示标题

* @return

*/

@Override

public TextView getTitleTextView() {

return mTextView;

}

@Override

public void initPagerTabView(Context context) {

View view = LayoutInflater.from(getContext()).inflate(R.layout.tab_view, this, false);

mTextView = view.findViewById(R.id.title);

addView(view);

}

}

2、创建一个类继承DynamicPagerIndicator并重写createTabView()。在createTabView()创建自定义的PagerTabView并将其设置给DynamicPagerIndicator。

public class CustomPagerIndicator extends DynamicPagerIndicator {

public CustomPagerIndicator(Context context) {

super(context);

}

public CustomPagerIndicator(Context context, AttributeSet attrs) {

super(context, attrs);

}

public CustomPagerIndicator(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@Override

public void createTabView(PagerAdapter pagerAdapter, final int position) {

CustomPagerTabView customPagerTabView = new CustomPagerTabView(mContext);

setTabTitleTextView(customPagerTabView.getTitleTextView(), position, pagerAdapter);

setTabViewLayoutParams(customPagerTabView, position);

}

}

3、在xml中使用自定义的CustomPagerIndicator,属性设置和DynamicPagerIndicator无区别。

android:id="@+id/dynamic_pager_indicator5"

android:layout_width="match_parent"

android:layout_height="wrap_content"

app:indicatorLineHeight="20dp"

app:indicatorLineRadius="8dip"

app:indicatorLineScrollMode="dynamic"

app:pagerIndicatorMode="fixed"

/>

最后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497765.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

详解MYSQL数据库密码的加密方式及破解方法

来源:http://www.heibai.net/articles/hacker/mimapojie/2009/0908/841.html MYSQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取,例如asp代码中…

4-Docker命令之docker logs

1.docker logs介绍 docker logs命令是用来获取docker容器的日志 2.docker logs用法 docker logs [参数] CONTAINER [root@centos79 ~]# docker logs --helpUsage: docker logs [OPTIONS] CONTAINERFetch the logs of a containerAliases:docker container logs, docker lo…

亚马逊等智能音箱“偷听”用户 被指收集隐私

来源:中国评论通讯社概要:近日,美国消费者保护组织Consumer Watchdog出具的一份报告显示,来自亚马逊和谷歌的专利申请曝光了其智能音箱是如何“偷听”用户的。据英国《每日邮报》报道,近日,美国消费者保护…

android camera捕捉,通过android camera2 API捕捉4:3相机图片与16:9传感器阵列相机

我想从使用Camera2 API(Android 5.0版本中添加)的Android fron-facing相机以4:3的宽高比捕捉视频。它工作正常,除非相机有16:9传感器阵列(作为三星Galaxy S5上的前置摄像头)。在这种情况下,图像看上去就像是16:9图像被…

HTTP 相应头相关

If-Modified-Since & If-None-MatchIf-Modified-Since,和 Last-Modified 一样都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头&am…

基于互联网云脑架构分析百度的现状与未来

前言:这是未来智能实验室基于互联网云脑架构,对世界科技企业的未来发展趋势进行分析的文章。因为百度排在BAT的首位,因此这个系列研究文章就从百度开始进行研究。作者:刘锋 计算机博士,互联网进化论作者互联网云脑&am…

华为鸿蒙操作界面,华为鸿蒙被“实锤”,操作界面曝光,为何被吐槽是换皮安卓?...

4月已经进入尾声,但鸿蒙系统的消息最近却变少了,记得此前发布Mate X2的时候,余承东表示要在4月份开始推送鸿蒙系统,Mate X2会成为首批升级机型。然而目前有不少用户吐槽称,依然还没有等到鸿蒙系统的推送,毕…

将文件内含有的特殊字符还原

如下文件内容: 这里有特殊字符:\n 、\t 、\u4e0a 、\/ 我要做的事,就是恢复其特殊字符的作用(而不是打印被转义后的效果) 直观的看,很容易:直接替换不就行了 line line.replaceAll("\\n&…

【深度】谭铁牛院士谈人工智能发展新动态

来源: Frontiers11月25日,模式识别与人工智能学科前沿研讨会在自动化所召开。会上,谭铁牛院士做“人工智能新动态”报告,回顾了近代以来历次科技革命及其广泛影响,并根据科学技术发展的客观规律解释了当前人工智能备受…

android keyboard用法,react-native-android-keyboard-adjust 最新使用方法 0.63

react-native 安卓动态调整 android:windowSoftInputMode"stateAlwaysHidden|adjustResize" 键盘模式最近尝试使用, 还能正常工作, 最新的react-native0.63依然可以正常使用, 方法如下:npm install --save react-native-android-keyboard-adjust1.2.0 装包复制 Andro…

屏蔽在线视频广告的方法

原理是改hosts的! 第一步:找到C:\WINDOWS\system32\drivers\etc里面的hosts文件,双击打开,选用记事本打开。 #优酷 127.0.0.1 atm.youku.com 127.0.0.1 Fvid.atm.youku.com 127.0.0.1 html.atm.youku.com 127.0.0.1 valb.atm.youku.com …

android批处理脚本,BAT批处理一键生成APK包脚本分享

BAT批处理一键生成APK包脚本分享将本bat放到cocos2dx目录下你的工程的project.android下(需修改变量)。ASmaker 用来将Resources文件夹下的lua文件批量加密 算法参考我之前的rc4算法实现。每次打包apk前 svn 最新的工程代码 和 cocos2dx引擎代码。echo offrem 工具路径set JAVA…

智能产品AI服务智商的权重研究|未来研究

作者:刘锋 计算机博士 互联网进化论作者前言:本文是未来智能实验室关于智能产品智商的最新研究文章,在提出人工智能的三种智商后,通过德尔菲法,对智能产品AI 服务智商的权重进行了确定,为2018年智能产品的…

前端 html5 css3 框架,UI,分享,CSS3,HTML5,前端框架

随着HTML5和CSS3以及网页设计布局的全面翻新创新改革。让很多网页设计者和界面设计师都知道一个道理。就是去掌握一套对应的工具包。这不仅仅是未来提高工作的效率,还能更好的去处理网页整体视觉效果。界面也可以做得更有交互性。优秀的工具包可以让您的工作事半功倍…

深入理解闭包

详细出处参考:http://www.jb51.net/article/24101.htm 一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可…

机器视觉行业的现状和未来

来源:科济天下网概要:在智能制造过程中,机器视觉主要用计算机来模拟人的视觉功能,也就是把客观事物的图像信息提取、处理并理解,最终用于实际检测、测量和控制。实现“中国制造2025”,完成从制造大国向制造…

学计算机专业的自荐信,浙江大学(计算机类)自主招生自荐信范文

浙江大学(计算机类)自主招生自荐信范文尊敬的浙江大学的招生办老师:您好!我是来自浙江省XX中学高三(8)班的XXX 。感谢您耐心看完我的个人申请资料。我身为一个浙江人,心目中的理想大学自然是浙江大学。“求是,创新。”是浙大的校训&#xff0…

代数拓扑的数学方法正在变革脑科学

来源: 中国数学会概要:没有人彻底了解大脑各部分间的连接图全貌,但是代数拓扑的工具正逐渐帮助人们管中窥豹。没有人彻底了解大脑各部分间的连接图全貌,但是代数拓扑的工具正逐渐帮助人们管中窥豹。人的连接体指的是大脑中不同部分…

网络统考计算机操作题需要保存不,统考计算机操作题技巧.doc

word文档 可自由复制编辑《计算机应用基础》操作题复习方法?考试考操作题,电脑是根据你的操作步骤给分,不是直接写答案就有分的,所以计算机操作题部分必须要做一定的练习才能掌握,以下为各部分的详细解题方法。《英语B》统考复习…

mysql 字符设置与修改

【知识性文章转载】MYSQL 字符集问题MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)…