3

MerqueeのようにTranslateX Animation Right to Left の ImageButtonがあるため、右から左にアニメーション化されます。クリックしても何も起こりませんでした。実際にはクリックは実行されず、クリックはimagebuttonの実際の位置でのみ実行されます。

何をすればいいですか?大変感謝しています...ありがとう

4

3 に答える 3

1

オブジェクトのアニメーション化には ObjectAnimator (以降のバージョンでは Honeycomb) を使用します。参照用に次のコードを使用できます。

RelativeLayout layout = (RelativeLayout) findViewById(R.id.relativeLayout1);
    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
    ObjectAnimator mover = ObjectAnimator.ofFloat(layout, "translationX",
            width, -width);
    mover.setDuration(10000);
    mover.setRepeatMode(Animation.INFINITE);
    mover.setRepeatCount(Animation.INFINITE);
    mover.start();

Apiを使用している場合は、次にハニカム(ジンジャーブレッドのように)を使用してから、このライブラリを使用します:http://nineoldandroids.com/

それは私のデバイスで動作するように動作します。

于 2014-01-18T08:23:23.760 に答える
1

現在、ビューのマトリックスを変更するアニメーションは、ビューが描画される座標のみを変更し、レイアウト内のビューの実際の位置は変更しませんonDraw()そのため、そのビューが呼び出されているときの単なるキャンバス変換です。

したがって、setTranslationX(100)ビューは右に 100 ピクセル描画されます。ただし、クリック領域 ( getHitRect()) は、レイアウト パスでビューに割り当てられた場所と同じままです。

または、実際にビューをアニメーション後にあるべき場所に配置し、アニメーションを逆方向に実行することもできます。

実際にレイアウトを変更したい場合は、そのビューを変更し、LayoutParams幅/高さ/マージンを変更する必要があります。次にrequestLayout()、アニメーションの各フレームで行う必要があります。

例: これは、FrameLayout 内のビューの左マージンをアニメーション化します。

  //---assuming animated view is a child of Framelayout---
   FrameLayout parent;
   View animatedChild;

    ValueAnimator animator = new ValueAnimator();
    animator.setFloatValues(0,parent.getWidth()); //--slide out to right--
    animator.setDuration(1000);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            FrameLayout.LayoutParams params = animatedChild.getLayoutParams();
            Float margin = (Float) valueAnimator.getAnimatedValue();
            params.leftMargin = margin.intValue();
            animatedChild.requestLayout();
        }
    });

    animator.start();
于 2014-01-18T06:44:29.547 に答える
0

Androidアプリを開発する前に、同様の問題に遭遇しました。そして、アニメーションが実行されているときに、実際に画像レイヤーが流れていることを発見しました。したがって、ボタンの元の位置をクリックする必要があります。つまり、ボタンが動き始めた場合は、黒いスペースをクリックする必要がある場合があります。

于 2014-01-18T05:37:16.017 に答える