【问题标题】:Having issues using Android 5.0 Activity transitions onto an activity with a ViewPager使用 Android 5.0 Activity 转换到带有 ViewPager 的 Activity 时遇到问题
【发布时间】:2015-02-16 08:00:20
【问题描述】:

因此,我们尝试创建从 ListView 中的图像到 ViewPager 库中的图像的跨活动图像转换。在执行此转换时,我们看到动画在 ViewPager 完成加载/绘图之前发生。这会导致 ViewPager 上的图像闪烁,使动画看起来很糟糕。

作为测试,我们将图像置于顶部以假装正在加载的 ViewPager 的外观。然后我们从 ListView 中的图像过渡到这个“虚拟”ImageView,然后在过渡完成后将其隐藏。这有帮助,但仍然不能创造流畅的体验,因为一旦 ViewPager 完成绘图,事情就会闪现。

任何提示将不胜感激!

【问题讨论】:

    标签: android android-5.0-lollipop material-design activity-transition


    【解决方案1】:

    根据 George Mount 的回答,您可以尝试在被调用的 Activity 的 onCreate() 方法中添加以下代码:

    postponeEnterTransition(); 
    viewPager.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 
        public boolean onPreDraw() { 
            viewPager.getViewTreeObserver().removeOnPreDrawListener(this);
            startPostponedEnterTransition();
            return true;
        }
    });
    

    【讨论】:

    • 如果我希望重新进入动画运行,只有当前打开 ViewPager 中的特定片段(称为 Activity),否则,只需使用默认的淡入淡出活动动画,你能建议一种方法吗?
    【解决方案2】:

    这里有一些想法:

    您可以使用 ViewPager 活动中的 Activity.postponeEnterTransition() 延迟转换,直到 ViewPager 活动准备好。当它准备好开始过渡时,运行 Activity.startPostponedEnterTransition()。

    如果您希望转换发生得更快并且图像相似(没有不同的裁剪),您可以使用共享元素快照并对其进行缩放。您可以在此处查看使用快照的示例:https://halfthought.wordpress.com/2014/12/10/reveal-challenge/

    如果您的调用 Activity 中的图像被裁剪,但您有一个未裁剪的图像支持它(例如 ImageView 裁剪图像),您可以覆盖调用 Activity 中的 onCaptureSharedElementSnapshot 以返回调用 Activity 中未裁剪的位图。然后在您的 ViewPager Activity 中,您可以使用 onCreateSharedElementSnapshot 为您的过渡选取该图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多