【问题标题】:How do you detect that a page has finished sliding in ViewPager.PageTransformer.transformPage method?如何在 ViewPager.PageTransformer.transformPage 方法中检测到页面已完成滑动?
【发布时间】:2017-08-08 05:20:49
【问题描述】:

此外,transformPage 方法是否同时在传入和传出视图上调用?如何为左侧的传出视图制作动画,为右侧的传入视图制作动画?

【问题讨论】:

    标签: android android-viewpager android-pagetransformer


    【解决方案1】:

    是的,transformPage 方法同时在两个视图上调用。您在 transformPage 方法的第一个参数中获取当前视图实例。

    public void transformPage(View view, float position) {...}
    

    第二个参数是视图的位置。如文档中所述

    相对于当前前端和中心的页面位置 * 寻呼机的位置。 0 是前面和中间。 1 是一满 * 页面位置向右,-1 为向左一页位置。

    可以使用以下代码应用简单的淡入淡出转换

    public class MyFadePageTransformer implements ViewPager.PageTransformer {
        public void transformPage(View view, float position) {
    
            //You can set Tag to view object and getTag to know current view
            //Log.d("Page Transform", "page " + view.getTag().toString());
    
            if (position < -1 || position > 1) {
                view.setAlpha(0);
            }
            else if (position <= 0 || position <= 1) {
                // Calculate alpha. Position is decimal in [-1,0] or [0,1]
                float alpha = (position <= 0) ? position + 1 : 1 - position;
                view.setAlpha(alpha);
            }
            else if (position == 0) {
                view.setAlpha(1);
            }
        }
    }
    

    然后将PageTransformer添加到ViewPager

    mViewPager.setPageTransformer(false, new MyFadePageTransformer());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 2016-12-29
      相关资源
      最近更新 更多