37

私は自分の問題の解決策を探していました。しかし、私のコードは問題ないようです。

説明しようとします: レイアウト定義に android:alpha="0" を含む TextView があります。(画像がクリックされたときに)その TextView を 0.0f から 1.0f までの AlphaAnimation で表示したい。

私の問題は、画像をクリックしても何も起こらないことです。しかし、奇妙なことに、レイアウト定義でアルファを 1 に設定し、画像をクリックすると、アニメーションが表示されます (アルファ 1 -> アルファ 0 -> アルファ 1)。

私は何を間違っていますか?

私のコード:

TextView tv = (TextView) findViewById(R.id.number);

AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
animation1.setDuration(1000);
animation1.setFillAfter(true);
tv.startAnimation(animation1);

前もって感謝します。

4

4 に答える 4

83

問題は にありandroid:alpha="0"ます。このプロパティは、ビューhttp://developer.android.com/reference/android/view/View.html#attr_android:alphaの透明度を設定します

alpha プロパティが 0 の場合、アニメーションは透明度を から0*0.0f=0に変更し0*1.0f=0ます。alpha プロパティが 1 に設定されている場合、アニメーションは透明度を から1*0.0f=0に変更し1*1.0f=1ます。そのため、最初のケースではテキストが表示されず、2 番目のケースではすべてが期待どおりに機能します。

物事を機能させるには、レイアウト xml で可視性プロパティを非表示に設定する必要があります。そして、アルファ アニメーション コールを開始する前にtv.setVisibility(View.VISIBLE);

于 2012-07-08T21:57:40.960 に答える
19

この回答には、より簡単な方法が示されています。

tv.animate().alpha(1).setDuration(1000);
于 2016-04-05T08:53:02.917 に答える
0

fillBeforeアニメーションの属性をtrueに設定すると、問題が解決しました。

TextView tv = (TextView) findViewById(R.id.number);

AlphaAnimation animation1 = new AlphaAnimation(0.0f, 1.0f);
animation1.setDuration(1000);
animation1.setFillBefore(true);
tv.startAnimation(animation1);

FillBeforeアニメーションを開始する前に変換を設定します。

于 2021-01-01T08:47:44.560 に答える