2011-10-01 14 views
1

簡単なタスクを達成したい - ダイアログを閉じる前に、自分のロジック(getWindow()、getAttributes()、windowAnimations = ...)に応じて別のクローズアニメーションを設定したい。私は、ダイアログに2つのボタンがあり、最初に押すと左にスライドし、2番目が押されると右にスライドします。私は、アンドロイド用のいくつかのアニメーションを含むスタイルファイルを作成しました:windowExitAnimationとandroid:windowEnterAnimationは、カスタムダイアログコンストラクタで渡された場合に動作します。しかし、私は異なるアニメーションが必要なので、コンストラクタのアプローチとしてコード内のwindowAnimationsを使用することはできませんオーバーライドできません。どのようにしてこのコードが機能しないのか?実行時のアニメーションを変更する

 // close button 
     _button_close = (ImageButton)findViewById(R.id.buttonClose); 

     if (_button_close != null) 
     { 
      _button_close.setOnClickListener(
       new Button.OnClickListener() 
       { 
        public void onClick(View v) 
        { 
         // set animation 
         getWindow().getAttributes().windowAnimations = R.style.DialogSlideOutLeft; 

         // close form 
         dismiss(); 
        } 
       } 
      ); 
     } 

答えて

1

私は同じ問題がありました。 は、ここに私のソリューションです: `

 alertCheckIn = new Dialog(this); 
     alertCheckIn.setTitle("Check-In"); 
     alertCheckIn.setContentView(textEntryView); //my custom dialog layout 

     lpDialog = alertCheckIn.getWindow().getAttributes(); 
     lpDialog.windowAnimations = R.style.FadeInDropOutDialogAnimation; 
     alertCheckIn.getWindow().setAttributes(lpDialog); 

     alertCheckIn.show(); 

`

、その後、私は切り替えたいときアニメーション: `

 lpDialog.windowAnimations = R.style.FadeInSlideLeftOutDialogAnimation; 
     alertCheckIn.getWindow().setAttributes(lpDialog); 
     alertCheckIn.cancel();` 

とき:

private WindowManager.LayoutParams lpDialog; 
+1

は効果がありません私のために – stoefln

関連する問題