0

左から右に移動し続けるボタンが必要で、クリックするたびに何かが実行されます。そのためには Property Animation を使用する必要があることがわかりました。しかし、私はそれについてかなり迷っています。ここに私のmain.xmlがあります:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<Button
    android:id="@+id/btn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="39dp"
    android:layout_marginTop="106dp"
    android:text="Button" />

.java ファイルを編集して、プロパティ アニメーションを使用して左から右にアニメーション化するにはどうすればよいですか?

4

2 に答える 2

3

この Tutorial Android Animationsをご覧ください。

レイアウトをアニメーション化する最も簡単な方法は、次のようにすることです。

    your_layout.animate().translationX(your_layout.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator());
于 2013-07-04T07:55:26.633 に答える
1

私は次のようにします:

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //new GetUrl().execute(20);

        // Test XML Files
        //testXMLFiles();

        final Button speakButton = (Button)findViewById(R.id.play);

        speakButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                // TODO: DO something!
            }
        });

        final ObjectAnimator horizontalAnimator = ObjectAnimator.ofInt(new ButtonAnimatorHelper(speakButton), "marginLeft", 0, 600);

        horizontalAnimator.setDuration(2000);
        horizontalAnimator.setRepeatCount(ValueAnimator.INFINITE);
        horizontalAnimator.setRepeatMode(ValueAnimator.REVERSE);
        horizontalAnimator.setInterpolator(new LinearInterpolator());

        horizontalAnimator.start();
    }

    /**
     * Helper class for button animation
     */
    private static class ButtonAnimatorHelper {

        final Button mButton;
        /**
         * Default constructor
         * @param speakButton
         */
        public ButtonAnimatorHelper(final Button button) {
            mButton = button;
        }

        public void setMarginLeft(final int margin) {
            final ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mButton.getLayoutParams();

            params.leftMargin = margin;

            mButton.setLayoutParams(params);
        }
    }
}

プロパティ アニメーションの理解を深めるために、Google I/O 2013 のこのセッションと、もちろんこちらのチュートリアルをお勧めします。

于 2013-07-04T08:06:11.700 に答える