ColorViewPager--动态改变ViewPager的背景,给你一个漂亮的ViewPager

在做一个天气应用的时候,做了这么一个控件,就是滑动viewpager的时候,自动改变viewpager的背景颜色,以达到一个较好的视觉效果,具体的效果可以看我的应用
现在简单说一下大概的思路。
其实没有太难的东西在里面,主要就是在滑动的时候,利用ValueAnimator来动态的改变viewpager的背景做的。

代码已开源,点击就可以得到,下面介绍下关键点。

    /**
     * 颜色的计算方法
     * @param page 当前页面的索引
     * @return 当前页的颜色和下一页的颜色
     */
    private void calculateColors( int page  ) {
        int[] colors = new int[2];
        colors[0] = BG_COLORS[ page % BG_COLORS.length ];
        colors[1] = BG_COLORS[ ( page + 1 ) % BG_COLORS.length ];
        createAnimation(colors);
    }

    /**
     * 根据指定的颜色来创建颜色动画
     * @param colors 指定的颜色
     */
    private void createAnimation(int... colors) {
        colorAnim = ObjectAnimator.ofInt(this, "backgroundColor", colors);
        colorAnim.setEvaluator(new ArgbEvaluator());
        colorAnim.setDuration(DURATION);
    }

需要说明的是

  • BG_COLORS是一个数组,用来保存每个页面的颜色值,可以通过setBgColors()方法来设置。
  • DURATION 为1000毫秒。因为两个页面切换的时候onPageScrolled()方法的positionOffset参数取值是从0到1的。
@Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            if( null != mlistener ) {
                mlistener.onPageScrolled(position, positionOffset, positionOffsetPixels);
            }
            if( lastScrollPage != position ) {
                calculateColors(position);
            }
            lastScrollPage = position;
            seek(positionOffset);
        }

时间有点匆忙,先写到这里吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值