码迷,mamicode.com
首页 > 其他好文 > 详细

ViewPager切换动画效果改动

时间:2017-04-25 13:19:42      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:int start   declared   south   start   private   his   date   this   access   

比方我们点击向右button,希望左边的view移动过来,有个平移效果,可是用系统默认的ViewPager切换的时候,会一闪而过。

这是为什么呢?

由于viewpager外面事实上有个scrollview,你能够使用反射的方法,设置他的scroll时间。代码例如以下。

主要代码:

//第一步:

        LayoutInflater mInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = mInflater.from(context).inflate(
                    R.layout.vw_personalcyclingtarget_test, personalFileMain);
            MyCycTargetViewPager mVp = (MyCycTargetViewPager) view
                    .findViewById(R.id.cyctarget_viewpager);

            try {
                // viePager平移动画事件
                Field mField = ViewPager.class.getDeclaredField("mScroller");
                mField.setAccessible(true);
                MyScroller mScroller = new MyScroller(mVp.getContext(),
                        new AccelerateInterpolator());
                mField.set(mVp, mScroller);
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
//第二步:

/**
 * 
 * @desc:ViewPager动画时间
 * @author: pangzf
 * @date: 2014年8月13日 下午6:00:05
 */
public class MyScroller extends Scroller {
    // 设置你须要的平移时间
    private int animTime = 500;

    public MyScroller(Context context) {
        super(context);
    }

    public MyScroller(Context context, Interpolator interpolator) {
        super(context, interpolator);
    }

    @Override
    public void startScroll(int startX, int startY, int dx, int dy, int duration) {
        super.startScroll(startX, startY, dx, dy, animTime);
    }

    @Override
    public void startScroll(int startX, int startY, int dx, int dy) {
        super.startScroll(startX, startY, dx, dy, animTime);
    }

    public void setmDuration(int animTime) {
        this.animTime = animTime;
    }
我们的项目是禁止使用viewpager左右滑动的,禁用左右滑动你能够点连接

点击向右button的效果图:

技术分享


个人项目txtreader:已经公布google play,http://blog.csdn.net/pangzaifei/article/details/52756777

有须要的能够联系



ViewPager切换动画效果改动

标签:int start   declared   south   start   private   his   date   this   access   

原文地址:http://www.cnblogs.com/yjbjingcha/p/6761205.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!