2017-02-07 12 views
0

ボタンがクリックされたときにトリガされるアニメーションが動作していない場合、クリックすると画像が表示されているかどうかがチェックされ、アニメーションが実行されている場合はelseが実行されます。問題は、elseステートメント内のアニメーションだけが動作していることです。 logcatで条件が満たされているとif文が実行されますが、アニメーションは実行されません。どんな助けもありがたい。私else文でアニメーションが動作する唯一のものであるクリックイベントAndroidのアニメーションがisShownメソッドで動作しない

if (smsArea.isShown()) { 
       Animation backDoww = AnimationUtils.loadAnimation(getContext(), 
         R.anim.slide_out_right); 
       smsArea.startAnimation(slide_out_right); 
       smsArea.setVisibility(View.GONE); 
      }else{ 
       Animation slide_in_right= AnimationUtils.loadAnimation(getContext(), 
         R.anim.slide_in_right); 
       smsArea.startAnimation(slide_in_right); 
       smsArea.setVisibility(View.VISIBLE); 
      } 

に呼び出されて、次の

、もし(smsArea.isShown())でトリガされなければならない最初のアニメーションが発生することはありません。

最初にsmsAreaをGoneに設定していますが、これはonCreateではxmlではなく、xmlではデフォルトのままにしておきます。アニメーションが起こらないことを知っているelseでxmlファイルを使用していてもエラーが私のアニメーションファイルにないことがわかります。

XML

  <LinearLayout 
      android:id="@+id/smsArea" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:paddingTop="12dp"> ..... </LinearLayout> 

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false" > 
<translate android:duration="300" android:fromXDelta="0%" android:toXDelta="100%"/> 
<alpha android:duration="300" android:fromAlpha="1.0" android:toAlpha="0.0" /> 

答えて

0

アニメーションリスナーを追加します。アニメーション:

backDoww.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      smsArea.setVisibility(View.GONE); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 

onAnimationEndであなたのビューを非表示にします。

関連する問題