2017-05-13 10 views
1

TransitionManagerbeginDelayedTransition()の後にコンテナ内のすべての変更を自動アニメーションするとします。このコードを実行すると、何もしません:TransitionManager.beginDelayedTransitionはスケーリングをアニメートしません

fooView.setScaleY(0); 
TransitionManager.beginDelayedTransition(rootView); 
fooView.setScaleY(1); 

質問:はなぜ、このコードは動作しますか? beginDelayedTransitionはスケールアニメーションをサポートしていませんか?


編集:要素より正確には、単にトランジションアニメーションなしのフルスケールに「ジャンプ」。これは、可視性や変換が使用されていても同じことがうまく機能するので、スケーリングでのみ発生します。

答えて

0

私はついに3日間の実験、読書、尋問を行いました。だから、短い答えはです:

TransitionManager.beginDelayedTransition(rootView, new Slide()); 
fooView.setVisibility(View.VISIBLE); 

材料設計とTransitionManagerの導入で - Androidのは、物事を自分自身で行わなければならない方法を処理します。私の場合、下からスライドするビューが必要だったので、scaleを使用してその機能を模倣し、ピボットポイントとvisibilityを設定しようとしましたが、実際にはもっと簡単に行うことができました。

長い答えはです。TransitionManagerはスケーリングに対応していません。何らかの理由でそれを使用したい場合は、独自のアニメーションを作成するか、サードパーティライブラリを使用する必要があります。しかし、Googleがマテリアルデザインを作成したときには、新しいパターンに従うことを願っていました。スケーリングのスケーリングを忘れて、「境界の変更」を考えてください。

編集:それはあなたが実際にスケーリングをアニメーション化することができそうですから(ChangeTransform使用して - https://developer.android.com/reference/android/transition/package-summary.html)を見るpskink。または、あなた自身のTransitionのよろしくです。

+1

'"長い答えは、TransitionManagerはスケーリングをサポートしていません。 "、いいえ、それはすべてあなたが使用する' android.transition.Transition'の内容に依存します。 – pskink

+0

https://medium.com/@andkulikov/animate -all-the-things-transitions-in-android-914af5477d50 - 「Scale:これは実際にTransitions APIの一部ではありません。 – Oleg

+0

'cd /sources/android-25/android/transition; grep -r scaleY .'また、あなた自身のカスタム 'android.transition.Transition'を書くこともできます。あなたが望むところは何でもしてください。 – pskink

関連する問題