2017-05-13 15 views
0

Dialogを表示および非表示にするカスタムアニメーションを適用しようとしています。アニメーションを使用しているときにダイアログビューが「手動で」アニメーション化されますが、アニメーションを使用しないときには

Viewは、「手動」アニメーションと呼ばれる.animate()と、Animationオブジェクトを受け取る.startAnimation(Animation animation)という2つのアニメーション方法を提供します。

alertDialog.getWindow().getDecorView()を呼び出してダイアログのビューにアクセスし、startAnimationを使用してアニメートしようとしましたが、動作しません。 animate関数を使用した場合にのみ、私はそれをアニメートできます。ここで

は、私の知る限りでは、同じ結果を返す必要があり、そのコード例ですが、私が扱ってる問題を再現:

AlertDialog dialog = AlertDialog.Builder(MainActivity.this).create(); // Create the dialog 
View decorView = dialog.getWindow().getDecorView(); // Access the dialog's view 
// The animation below works fine 
decorView.animate().rotationXBy(45).setDuration(500).start(); // Animate it "manually" 
// Create an animation instance 
RotateAnimation scaling = new RotateAnimation(0, 45); 
scaling.setDuration(500); 
scaling.setFillAfter(true); 
// This animation does NOT work 
decorView.startAnimation(scaling); 

私は他のビューと同じコードを試してみましたが、それ正常に動作するので、機能を破壊するダイアログにはいくつかの特質があると思いますか?

私は何か間違っているかどうか知りたいです、可能であれば、私が望むものをどのように達成することができますか?

答えて

0

私は、ダイアログを使用する代わりに別の方法を使いましたが、実際には、プラットフォームが提供する有用なクラスを使用する代わりに、手動でアニメーションを手動で作成する必要があります。

Animationの準備ができていないビューに関連する問題があり、decorView.post(Runnable)でもそれを開始しましたが、同じ結果が得られました。

他の誰かがこのアプローチを試している場合(真剣に考えないで、自分のビューを作成して通常のアニメーションにすると、ダイアログの解任をアニメーション化する悪い問題に遭遇します)、ダイアログをアニメーション化するのは簡単ではないことに注意してください。おそらくそれを行うライブラリを探します。

関連する問題