###animationをdialog画面にも適応する方法。
タイトル通りです。
私はある方からアドバイスいただいて、下記のようにアニメーションを適応する方法を学びました。
『トップレベルの背景色を黒、ルートビューの背景色を白として、ルートビューの透明度を落とすことで黒くする』という方法です。
lang
1 2 View decorView = getWindow().getDecorView(); 3 decorView.setBackgroundColor(Color.BLACK); 4 5 // ルートビューにIDを与えてfindViewById()で取得しても同じ 6 View rootView = ((ViewGroup) decorView).getChildAt(0); 7 rootView.setBackgroundColor(Color.WHITE); 8 9 AlphaAnimation alpha = new AlphaAnimation(1.0f, 0.0f); 10 alpha.setFillEnabled(true); 11 alpha.setFillAfter(true); 12 alpha.setDuration(3000); 13 14 rootView.setAnimation(alpha)
これは上手くいき、その人には感謝しかないのですが、最近ある問題が出てきました。
それはdialogflagmentをactivity内で出したとき、dialog画面にanimationが適応できないということです。
背景のactivity画面はきちんと暗くなるのですが、dialog画面だけが残ってしまいます。
これに対応する策について、私なりに二つ考えました。
一つ目はdialogflagmentのxmlファイルをactivityのルートビューに加えること。
二つ目はdialogflagmentのxmlファイルのルートビューにIDを与え、findViewById()で取得し、複数の同時アニメーションをすることです。
しかし、両方とも上手くいきませんでした。
ここで私はteratailに質問するころあいかな?と思いました。
というのも、具体的な実装で私が間違っているのならいいのですが、上二つのやりかたでは、そもそもできないのではなかったらこまるな、と思ったからです。
肝心の質問ですが、ここでは以下のようにしたいと思います。
『animationをdialog画面にも適応するには上にあげた二つのやりかたでいいのか?あってなかった、もっといいやりかたがあるのか?』
どうかご教授お願いします・・・!
追記---
また、私はDialogを消してから、activityのフェードアウトをするという方法も考えました。
しかし、それも上手くいきませんでした。
どうやら、onAnimationStart
でDialogを終わらせると、次のactivityを開始するコードが実行されないみたいです。(すでにDialgは死んでいるため)
lang
1 2 3 AlphaAnimation fadeout; 4 fadeout =new AlphaAnimation(1.0f,0.0f); 5 fadeout.setFillEnabled(true); 6 fadeout.setFillAfter(true); 7 fadeout.setDuration(1500); 8 9 fadeout.setAnimationListener(new Animation.AnimationListener() { 10 @Override 11 public void onAnimationStart(Animation animation) { 12 dismiss();//ここでDialogを終わらせたらダメらしい。 13 } 14 @Override 15 public void onAnimationEnd(Animation animation) { 16 //フェードアウトが終わったとき、次のactivityを開始。 17 Intent intent = new Intent(getContext(), FirstActivity.class); 18 intent.putExtra("number", "0"); 19 startActivityForResult(intent, 0); 20 //次のactivityを開始したら、このactivityを消す。 21 ((Activity) getContext()).finish(); 22 } 23 @Override 24 public void onAnimationRepeat(Animation animation) { 25 } 26 });
回答1件
あなたの回答
tips
プレビュー