0

私はAndroidのロリポップトランジションで働いている、と私は次のような問題によりsumbledました:アンドロイド - 複数の共有要素を持つ異なる遷移

  1. が、私はそれの上に、ImageViewCardViewを持っており、 TextView
  2. カードをクリックすると、新しいアクティビティが開始され、異なる位置にImageViewTextViewの両方が含まれています。
  3. 共有要素としてTransitionTextViewが含まれていないと、突然表示されないImageViewが消えてしまいます。私はそれが含まれている場合
  4. 、それがうまくテキストを拡張し、突然最終的なサイズに変更していません(私はすでにthis solutionの承知していますが、問題は、私はまたの組み合わせであるデフォルトImageViewTransitionを維持したいですChangeBoundsTransition,ChangeImageTransformなど)。

新しいActivityを起動すると、異なる共有ビューに異なる遷移がスローされる方法を知っている人はいますか?

乾杯

答えて

0

OK、

これは、達成可能な遷移クラスを拡張しています。 ImageViewとTextViewを別々にアニメーション化したいので、Transformという子クラスをTextTransformと書いています.ChangeImageTransformと同じですが、これはAndroid API 21+の一部です。キーは(ImageViewオブジェクトを探しますChangeImageTransformのためのケースを示す)このメソッドをオーバーライドした後

@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> 

そして、あなたは使用して新しいActivityのOnCreateの方法でこのTransitionを設定setSharedElementEnterTransition(inflatedTransitionSet);

関連する問題