2016-09-05 28 views
1

最初の画像がクリックされたときにメソッドを呼び出すと2つのImageViewをクロスフェードしようとしていて、2番目の画像にフェードインします第2の画像をクリックした後、第1の画像にフェードインする。 1つの方法で1つの画像をクロスフェードするときに機能しますが、他の方法を追加して前の画像にクロスフェードすると、画像をクリックしても何も起こりません。2つの関数を使って2つのImageViewをクロスフェードする

public class MainActivity extends AppCompatActivity { 

    public void narutoFade(View view){ 
     ImageView naruto =(ImageView) findViewById(R.id.naruto); 

     ImageView narutosage =(ImageView) findViewById(R.id.narutosage); 


     naruto.animate().alpha(0f).setDuration(2000); 
     narutosage.animate().alpha(1f).setDuration(2000); 
    } 

    public void narutoSageFade(View view) { 

     ImageView naruto2 = (ImageView) findViewById(R.id.naruto); 
     ImageView narutosage2 = (ImageView) findViewById(R.id.narutosage); 

     narutosage2.animate().alpha(0f).setDuration(2000); 
     naruto2.animate().alpha(1f).setDuration(2000); 

    } 
} 
+0

'TransitionDrawable'を使用すると、第1層と第2層の間でクロスフェードするLayerDrawablesの拡張です。トランジションを開始するには、startTransition(int)を呼び出します。最初のレイヤーだけを表示するには、resetTransition()を呼び出します。 – pskink

+0

これは別の方法ですが、詳細が必要です。おかげでたくさん! – Ibou92

答えて

0

たぶん、あなたは、フィールドの両方として宣言について考える必要があり、一度だけのonCreateで()/ onResume()それらを宣言し、両方を提供しています1つのクロスフェード方式記述:

public class MainActivity extends AppCompatActivity { 

    private ImageView naruto, narutosage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     naruto =(ImageView) findViewById(R.id.naruto); 
     narutosage =(ImageView) findViewById(R.id.narutosage); 

    } 

    public void crossfade(View fadeIn, View fadeOut) { 
     fadeIn.animate().alpha(1).setDuration(2000); 
     fadeOut.animate().alpha(0).setDuration(2000); 
    } 

} 

とあなたのボタンでをonClicksあなただけ呼び出す:

crossfade(naruto, narutosage); 

または

crossfade(narutosage, naruto); 
を0
+0

私は最終的に私のやり方を見つけました。しかし、あなたの答えをありがとう!それを行う別の方法です、少なくともあなたはそれがどのように動作するかを説明しようとしました:) – Ibou92

関連する問題