0

1 つの大きな問題があります。このコードを使用して、ImageView をアニメーション化し、1 つの ImageView を現在の X 位置から 0 に水平に移動します。

アニメーションコードはこちら

    translate = new TranslateAnimation(0, translateX, 0, 0);
    translate.setDuration(400);
    translate.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) {
            txtTitle.setText(String.format("Translate: %d %d", translateX, lpView1.leftMargin));
            lpView1.leftMargin = 0;
            mainSwitchBtn.setLayoutParams(lpView1);
        }

        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
        }

    });
    translate.reset();
    translate.setFillAfter(false);
    mainSwitchBtn.clearAnimation();
    mainSwitchBtn.startAnimation(translate);

アニメーションが終了したら、ImageView を 0 に移動しました。その際、ImageView のちらつきが見られます。何が問題なのかわからない。誰かが私を助けることができますか?

編集: 設立された問題

私は自分のコードに問題があることを発見しました。

このコードを置き換えました

mainSwitchBtn.setLayoutParams(lpView1);

これとともに

mainSwitchBtn.layout(0, 0, 0, 0);

レイアウト パラメータにマージンを設定することと、オブジェクトを表示するためのパラメータを設定すること、または .layout 関数を使用することの違いは何なのかわかりませんが、ちらつきはありません。

4

1 に答える 1

0

アニメーションが終了し、imageview がアニメーション化されていない元の画像に戻ったようです。アニメーションの代わりに Horizo​​ntalScrollView を使用してみてください。

于 2013-04-02T10:41:47.227 に答える