1

多数のボタンと 2 つのテキスト ビューを含むレイアウト (RelativeLayout) があります。情報が変更されるたびに、すべてのビューをフェードアウトし、情報を更新してから、ビューをフェードインします。これにはレイアウトアニメーションを使用します。

非常に奇妙なことは、テキスト ビューは 1 回しかアニメーション化できないことです。一度正しくフェードインおよびフェードアウトすると、アニメーション化されなくなります。一方、ボタンは問題なくアニメーションを続けます。

もう1つのおそらく奇妙なことは、この問題がAndroid 2.3.xでは発生せず、Android 4.0.xで発生することです。

フェードイン後にテキストビューのアニメーションをクリアすることで問題を回避できますが、まだフェードインしていないため見栄えがよくありません。

フェードインする前にテキスト ビューのアニメーションをクリアしようとしましたが、役に立ちません。マニフェストで targetSdkVersion プロパティのさまざまな設定も試しましたが、結果はありません。

フェードイン アニメーション (フェードアウトも同様):

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="750" 
    android:fillAfter="true" 
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0" 
/>

アニメーション コード (これは、レイアウトがフェードインするたびに実行されます):

// Set listener.
viewGroup.setLayoutAnimationListener(listener);

// Load animation.
final Animation fadeIn = AnimationUtils.loadAnimation(context, R.anim.fade_in);

// Create and start animation controller.
final LayoutAnimationController animController = new LayoutAnimationController(fadeIn);
viewGroup.setLayoutAnimation(animController);
animController.setAnimation(fadeIn);
animController.setDelay(FADE_IN_DELAY + extraDelay);
animController.setOrder(LayoutAnimationController.ORDER_REVERSE);
animController.start();

誰にもアイデアはありますか?Buttons と TextViews の間にある種のアニメーション固有の違いはありますか? Android 4 で下位互換性を損なうアニメーションの変更はありますか?

ありがとうございました!

4

1 に答える 1

2

レイアウト アニメーションは、ビュー グループが子をレイアウトする場合にのみ発生します。[LayoutAnimationController][1]ドキュメントによると、子ごとに同じアニメーションが再生されますが、開始時間は異なります。通常は、ListViewまたはGridViewアイテムの入り口をアニメーション化するために使用されます。

通常、コンテンツを更新すると、アニメーションは再生されません。コンテンツを更新するたびにアニメーションが再生されるようにするにはView.startAnimation(Animation)、 とを使用する必要があります。View.clearAnimation()

于 2013-01-06T15:26:47.147 に答える