7

ボタンの座標を取得し、ボタンを1つずつ増減して、ボタンが左に移動してから右に移動できるようにすることで、ボタンをアニメートしたいと思います。

4

4 に答える 4

9

TranslateAnimationを使用します。

TranslateAnimation animation = new TranslateAnimation(start_x, start_y, end_x, end_y);
animation.setDuration(1000); // duartion in ms
animation.setFillAfter(false);
button.startAnimation(animation);

位置を取得する方法がわかりません。button.getTop()とbutton.getLeft()が機能する可能性があります...

于 2012-07-06T19:05:29.557 に答える
4

これが役立つかどうかはわかりませんが、これらのメソッドsetTranslationX(float)setTranslationY(float)を使用してこれを行うことができたのと同じ問題が発生しました。

あなたはそれをこのように使うことができます

Button button = (button) findViewById(your id); 
button.setTranslationX(a float value);

詳細情報を提供するAndroidのドキュメントは次のとおりですhttp://developer.android.com/reference/android/view/View.html#attr_android:translationX

于 2014-06-17T10:54:07.553 に答える
1
   Solution for those who are looking for left to right animation)

            TranslateAnimation animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 1500.0f); // new TranslateAnimation (float fromXDelta,float toXDelta, float fromYDelta, float toYDelta)

               animation.setDuration(1500); // animation duration
                animation.setRepeatCount(1); // animation repeat count
            animation.setFillAfter(false);
                your_view .startAnimation(animation);//your_view for mine is imageView     


Solution for those who are looking for repeated animation(for eg. left to right and right to left)

            TranslateAnimation animation = new TranslateAnimation(0.0f, 0.0f, 0.0f, 1500.0f); // new TranslateAnimation (float fromXDelta,float toXDelta, float fromYDelta, float toYDelta)
                animation.setDuration(1500); // animation duration
                animation.setRepeatCount(4); // animation repeat count
                animation.setRepeatMode(2); // repeat animation (left to right, right to left)

                animation.setFillAfter(true);
                your_view .startAnimation(animation);//your_view for mine is imageView 
于 2016-12-15T07:48:38.560 に答える
1

ボタンをクリックした画像が左から右に移動すると、このコードをフラグメントにも使用できます。

このコードをフラグメントのonCreateViewに挿入するか、ボタンリスナーを直接使用します。

    View view = inflater.inflate(R.layout.fragment_move,container,false);
    mBtnMove = view.findViewById(R.id.btn_move);
    mImageMove = view.findViewById(R.id.imv_move);
    mBtnMove.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            float start_x_axis = 0; // initialize the axis value start from and end
            float start_y_axis = 1000;
            float end_x_axis = 0;
            float end_y_axis = 0;
            TranslateAnimation animation = new TranslateAnimation(start_x_axis, start_y_axis, end_x_axis, end_y_axis);
            animation.setDuration(2500); // Duration of image to move from left to right
            mImageMove.startAnimation(animation);
        }
    });
  return view;
于 2019-03-25T14:25:27.050 に答える