美文网首页
Android自定义View系列(4),自定义一个TabLayo

Android自定义View系列(4),自定义一个TabLayo

作者: 碧云天EthanLee | 来源:发表于2021-06-26 19:24 被阅读0次

先看效果:

自定义Tablayout[1].gif

功能分三个步骤:

(1)自定义一个TextView,实现文本左右两半显示不同颜色,且可调节两半百分比
(2)自定义一个Layout,装载多个步骤(1)中所实现的自定义TextView,文本间颜色实现联动
(3)监听ViewPager滑动翻页百分比,实现TabLayout的item字体颜色随百分比变化

一、自定义一个TextView,实现文本左右两半显示不同颜色,且可调节两半百分比

一个TextView文本左右两边显示不同颜色效果图如下:

mTextView.jpg
此控件的实现和[第一节自定义TextView](Android自定义View系列(1)-绘制文字实现一个简单的TextView(自定义View基础) - 简书 (jianshu.com)
)过程大体相同,都是自主绘制文字。区别在于使用了画布的canvas.clipRect()方法,该方法可实现只显示被裁剪的区域。自定义文本显示不同颜色的TextView完整代码:(MyTabLayout/ColorTrackTextView.java at master · EthanLee-88/MyTabLayout (github.com)

二、自定义TabLayout,实现完整的标题栏

效果如下:

tabLayout.jpg
此处添加三个步骤一中自定义的TextView形成一个完整的标题栏。
该布局实现简单,只是重写了Linearlayout,使用addView(colorTrackTextView)方法水平添加三个自定义TextView。完整代码:(MyTabLayout/MyTabLayout.java at master · EthanLee-88/MyTabLayout (github.com)

三、对ViewPager滑动进行监听,获取页面滑动百分比,实现item颜色变化联动显示

ViewPager页面滑动百分比代码如下:

mainPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // 1页面滑动监听
                    if (position > colorText.size() - 1) return;
                    if (position + 1 < colorText.size()){
                        colorText.get(position).changeRightColor(1 - positionOffset);
                        colorText.get(position + 1).changeLeftColor(positionOffset);
                    }
            }
            @Override
            public void onPageSelected(int position) {

            }
            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });

注释1处就是滑动监听的回调方法,其中参数positionOffset是一个偏移量,是一个百分数。获得该参数即可设置item颜色区域百分比。
Demo完整代码:(EthanLee-88/MyTabLayout: 自定义TabLayout,item颜色随滑动百分比变化 (github.com)

相关文章

网友评论

      本文标题:Android自定义View系列(4),自定义一个TabLayo

      本文链接:https://www.haomeiwen.com/subject/aamzyltx.html