Android L(5.0) Activity Transition 共享元素跳转无效解决

介绍

Android
L中引入的共享元素转场很好,但一般情况下由list到详情页中的共享元素比如是ImageView,PhotoView等需要网络加载的图片时,可能跳转到详情页面就没有效果,国内找多文章没有这解决这方面的文章,今天google一上午解决了。就是转场开始的Activity需要延时。

描述

这里用A,B代表两个Activity,Activity可以包含Fragment,都是可以实现。 
解决的就是A->B无明显效果,B-A有效果的情况。

解决办法

1. 首先在B Activity中setContentView后调用

        // Postpone the shared element enter transition.
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            postponeEnterTransition();
        }

  • 1
  • 2
  • 3
  • 4
  • 5

或者使用supportPostponeEnterTransition();,对就的源码其中与方面一样

public static void postponeEnterTransition(Activity activity) {
        if (Build.VERSION.SDK_INT >= 21) {
            ActivityCompatApi21.postponeEnterTransition(activity);
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5

2.
在Activity或者Fragment中获取网络或者加载一个错误图片后设置Activity的

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                            startPostponedEnterTransition();
                        }
  • 1
  • 2
  • 3

或者supportStartPostponedEnterTransition(); 
建议在Activity设置一个函数,然后Fragment在合适的时候调用这个Activity的函数。

 public void scheduleStartPostponedTransition(final View sharedElement) {
        sharedElement.getViewTreeObserver().addOnPreDrawListener(
                new ViewTreeObserver.OnPreDrawListener() {
                    @Override
                    public boolean onPreDraw() {
                        sharedElement.getViewTreeObserver().removeOnPreDrawListener(this);
                        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                            startPostponedEnterTransition();
                            supportStartPostponedEnterTransition();
                        }
                        return true;
                    }
                });
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

文后有大量详细讲解Android L Activity
Transition,有时间可以读一读。

参考文档

Goolge Official
Transition
 
Code Path Android Guide 
Getting Started with Activity & Fragment
Transitions
 
Using shared element transitions
in activities and fragments

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇