Android : 在按钮动画后开始Activity

Android : Start Activity after button animation

我使用 android library 制作了一个带有漂亮动画的提交按钮(代码如下),按下按钮后,我想开始一个新的 activity,但是只有在动画完成后,我该怎么做?

Xml 按钮代码 "submitButton":

<com.spark.submitbutton.SubmitButton
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:text="Submit"
        android:textColor="@color/gray"
        app:sub_btn_background="@color/white"
        app:sub_btn_duration="3000"
        app:sub_btn_line_color="#99FF00"
        app:sub_btn_ripple_color="#99FF00"
        app:sub_btn_tick_color="@color/white"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/submitButton" />

java 文件和动作侦听器的提交按钮:

 SubmitButton submitButton = (SubmitButton) findViewById(R.id.submitButton);
        submitButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this,ListViewActivity.class));
            }
    });

与其直接启动 activity,不如将调用包装在一个可运行的程序中,并以 3000 毫秒的延迟调用 postDelayed。 像这样

public void onClick(View v) {
    Runnable r = new Runnable()
    {
        public void run()
       {
            startActivity(new Intent(MainActivity.this,ListViewActivity.class));
        }
    }
    v.postDelayed(r, 3000);
}

如果该自定义按钮不为其动画提供侦听器,则无法知道其动画何时完成。

或者,您可以使用该动画的持续时间,并在 postDelayed(runnable, duration)

中开始您的 activity
new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(new Intent(MainActivity.this,ListViewActivity.class));
        }
    }, duration);

您也可以将 new Handler() 替换为 onClick(View v)

中的 v