android 实现viewpager滑动的同时,上面小图标跟着一起滑动


      viewpager和fragment的综合使用能够实现一个很好的滑动效果,然后在添加类似的tab标签,这样就能标识所处的页面。(因职业操守,不能上传图片,请见谅)

     但问题来了,tab的点击事件可以放到viewpager的onPageSelected中实现,但是在滑动的过程中,上面的小图标跟着一起滑动,就必须要放到onPageScrolled这个函数中了。

    viewpaper函数意义请查看:http://blog.csdn.net/error/404.html?from=http%3a%2f%2fblog.csdn.net%2fchanglei_shennan%2farticle%2fdetails%2f45476617

    首先先看下这个函数的参数意义: 

 onPageScrolled(int arg0,float arg1,int arg2)    ,当页面在滑动的时候会调用此方法,在滑动被停止之前,此方法回一直得到

调用。其中三个参数的含义分别为:

arg0 :当前页面,及你点击滑动的页面

arg1:当前页面偏移的百分比

arg2:当前页面偏移的像素位置   

(参见官网:http://docs.eoeandroid.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html#onPageScrolled(int, float, int))

明白这些参数,实现起来就很简单了。

  首先大体思路讲解:

         1. 初始化界面的时候,默认该图标显示在第一个tab处。

            image = (ImageView) findViewById(R.id.cursor); //image标志那个滑动的小图标
Bitmap btm = BitmapFactory.decodeResource(getResources(),
R.drawable.redline);
bmpW = btm.getWidth();


DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
screenW = dm.widthPixels;
distanceTab = screenW / 3;
offset0 = (screenW / 3 - bmpW) / 2;  //滑动偏移量
matrix = new Matrix();
matrix.postTranslate(offset0, 0);
image.setImageMatrix(matrix);


          2.  然后在根据viewpager的onPageScrolled偏移量,及当前界面,在计算滑动偏移量,最后实现活动。因这个函数是根据滑动效果,实时调用的,这样就能实现,小图标跟随viewpaper的滑动效果。

             if (arg0 == 0) {
offset0 = (screenW / 3 - bmpW) / 2;
}
if (arg0 == 1) {
offset0 = screenW / 2 - bmpW / 2;
}
if (arg0 == 2) {
offset0 = screenW * 2 / 3 + bmpW - 25 ;
}

                                offset = offset0 + arg1 * (screenW / 3);     //计算在每个页面的偏移量

                                //实现偏移动画
Matrix matrix1 = new Matrix();
matrix1.postTranslate(offset, 0);
image.setImageMatrix(matrix1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值