我使用了一个android library制作一个动画效果很好的提交按钮(下面的代码),按下按钮后,想要开始一个新的活动,但只有在动画结束后,我该怎么做去做?
按钮的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));
}
});
答案 0 :(得分:3)
如果该自定义按钮没有为其动画提供侦听器,则无法知道其动画何时完成。
或者,您可以使用该动画的持续时间,并在postDelayed(runnable, duration)
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(MainActivity.this,ListViewActivity.class));
}
}, duration);
您也可以使用new Handler()
v
替换onClick(View v)
答案 1 :(得分:2)
不是直接启动活动,而是在runnable中包含调用,并使用3000 ms延迟调用postDelayed。 喜欢这个
public void onClick(View v) {
Runnable r = new Runnable()
{
public void run()
{
startActivity(new Intent(MainActivity.this,ListViewActivity.class));
}
}
v.postDelayed(r, 3000);
}