0

我使用Android Lollipop转换工作,而且我在下面的问题sumbled:Android的 - 不同的转换与多个共享的元素

  1. 我有CardViewImageView,并在它的,顶部TextView
  2. 当我点击卡片时,会启动一个新的活动,它包含位于不同位置的ImageViewTextView
  3. 如果我不包括在Transition作为共享元素TextView,突然自败[进入后面]的ImageView,不看,好,太好了。
  4. 如果我包含它,它不会很好地缩放文本,并突然改变到最终尺寸(我知道this solution已经,但问题是我想保持默认ImageViewTransition,这是一个组合一个ChangeBoundsTransition,一个ChangeImageTransform,等等)。

因此,任何人知道如何有推出新Activity时被抛出针对不同的共享视图不同的转变?

干杯

回答

0

OK,

这是可以实现扩展Transition类。由于我想动画不同的ImageView和TextView,我只写了TextTransform子类Transform,类似于Android API 21+的一部分ChangeImageTransform。关键是重写此方法(ChangeImageTransform所示的情况看起来对ImageView对象):

@Override 
private void captureValues(TransitionValues transitionValues) { 
    View view = transitionValues.view; 
    if (!(view instanceof ImageView) || view.getVisibility() != View.VISIBLE) { 
     return; 
    } 
    (...) 
} 

然后你擦所有转换到新的场景,以及相关的变换将被连接到其对应的观点:

<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> 
    <fade android:fadingMode="fade_out" /> 
    <changeBounds /> 
    <changeImageTransform /> 
    <com.mypackage.transforms.TextTransform /> 
    <fade android:fadingMode="fade_in" /> 
</transitionSet> 

然后设置这个Transition使用新Activity的OnCreate方法setSharedElementEnterTransition(inflatedTransitionSet);