53

フェードインおよびフェードアウトするイメージ ボタンを表示する必要があります (およびフェードインおよびフェードアウトなど)。透明度は setAlpha で設定できますが、フェードインおよびフェードアウトするにはどうすればよいですか? UIスレッドでそのようなことをする必要があるので、別のスレッドでそれを行うことはできませんよね?

アニメーションでできると思いますが、アニメーションの経験がなく、何を検索すればよいかわからないため、何も見つかりませんでした...

実際、私が本当に望んでいるのは、1 つの画像をフェード インし、別の画像をフェードアウトすることですが、最も簡単な方法は、最初の画像ボタンを 2 番目のボタンの下に配置し、2 番目の画像をフェードすることだと思います。または、それを行う簡単な方法はありますか?

4

6 に答える 6

89

これは私が現在使用しているソリューションで、12 未満の API レベルで動作します。

AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f);
anim.setDuration(1000);
anim.setRepeatCount(NUM_REPEATS);
anim.setRepeatMode(Animation.REVERSE);
button.startAnimation(anim);
于 2013-06-24T08:32:23.020 に答える
5

コトリンで:

view.animate().alpha(1f).setDuration(1000)
            .setInterpolator(AccelerateInterpolator()).start()

を追加してAnimatorListenerAdaptersetListener他のビュー ステートを処理できます。

于 2018-11-22T06:36:00.273 に答える
0

最初の画像のいくつかの連続したフレームを 2 番目の画像にモーフィングしたり、元に戻したりしてanimation-list、onCreate でそれらを定義してアニメーションを開始できます。

button_frames.xml:

   <?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"/>

作成時:

   ImageView button= (ImageView)findViewById(R.id.button);
   mAnimation = (AnimationDrawable) animationView.getBackground();
   button.postDelayed(new Runnable() {
       public void run() {
         mAnimation.start();
       }
   }, 100);
于 2013-05-28T20:33:54.650 に答える