2013-05-28 5 views
31

フェードインとフェードアウトの画像ボタンを表示する必要があります。 透明度はsetAlphaで設定できますが、フェードインとフェードインを行うにはどうすればいいですか? ? UIスレッドでこのようなことをする必要があるため、私は別のスレッドではできません。私はAndroid:フェードビューイン/アウト

...私はアニメーションの経験を持っていないと、本当にために検索するかわからないので、それがアニメーションで行うことができますが、私は何も見つかっていないと思います

は、実際にどのようなI本当に欲しいのは、1つの画像を消してもう1つの画像を消してしまうことですが、最も簡単な方法は、最初の画像ボタンを2番目の画像ボタンの下に置き、2番目の画像ボタンを消してしまうことです。それとも簡単な方法がありますか?

+0

あなたがアニメーションを使用し、あなたのアルファトランジションとアニメーション 'XML'ファイルを作成し、設定することができます'ImageButton' – kabuto178

答えて

56

12より低いAPIレベルで動作します私は今使用しているソリューションです:

AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f); 
anim.setDuration(1000); 
anim.setRepeatCount(NUM_REPEATS); 
anim.setRepeatMode(Animation.REVERSE); 
button.startAnimation(anim); 
13

これは私たちがプロジェクトで使用したアニメーションです。スピナーはビューですので、イメージビューでこれを変更できます。実際には2枚の画像がお互いの上にあり、1つは目に見えないものです。これが私たちのやり方です。それが役に立てば幸い。

spinner.setVisibility(View.VISIBLE); 
    spinner.setAlpha(0); 

    spinner.animate().setDuration(200).alpha(1).setListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      spinner.setVisibility(View.VISIBLE); 
     } 
    }); 

    infoActivityContent.animate().setDuration(200).alpha(0).setListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      infoActivityContent.setVisibility(View.GONE); 

     mainPresenter.logout(); 
     } 
    }); 
+0

にもこれはAPIレベル12が必要で、私は8が必要です。とにかく、何かを見つけるまで、それを使用します。私が無限にフェード・イン・アンド・アウトしたい場合(つまり、フェードインアニメーションのエンド・リスナーからアニメーションのフェードインを開始する必要がある場合)、最終的にメモリオーバーフローが発生しますか? – DominicM

+1

これは通常は問題ではありません。それらはすべて異なるスレッドで実行されており、最初のスレッドが完了すると、割り当てられたすべてのメモリが解放されます。 –

-1

アニメーションクラスを実装する(XMLを使用して読み込むことも、動的に作成することもできます)。

API setAnimation(アニメーションアニメーション)で設定できます。

0

あなたはあなたの第二の画像にモーフィングあなたの最初の画像のいくつかの連続するフレームを作り、バック、そしてanimation-listとしてそれらを定義し、

button_frames.xmlのonCreateでアニメーションを開始することができます

<?xml version="1.0" encoding="utf-8"?> 
     <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item android:drawable="@drawable/frame1" android:duration="100" /> 
     <item android:drawable="@drawable/frame2" android:duration="100" /> 
        .... 

レイアウト:

<ImageView android:id="@+id/button" 
     android:background="@drawable/button_frames"/> 

のOnCreate:

ImageView button= (ImageView)findViewById(R.id.button); 
    mAnimation = (AnimationDrawable) animationView.getBackground(); 
    button.postDelayed(new Runnable() { 
     public void run() { 
     mAnimation.start(); 
     } 
    }, 100); 
4

Crossfading Two ViewsAndroid developersから読み取る必要があります。このチュートリアルでは、あなたが望むことをする方法について説明します。ここで

+1

これは非常にうまく見えますが、APIレベル12が必要です。レベル8が必要です(これを忘れています...) – DominicM

関連する問題