Android 如何在5秒钟后更改活动?
我用我的个人标志做了一种索引活动。 我想在5秒钟后改变活动。 所以我准备了2个布局,我运行了启动器。 在我设置的启动器活动中:Android 如何在5秒钟后更改活动?,android,android-animation,Android,Android Animation,我用我的个人标志做了一种索引活动。 我想在5秒钟后改变活动。 所以我准备了2个布局,我运行了启动器。 在我设置的启动器活动中: Intent intent = new Intent(Home.this, IndexActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); try { Thread.sleep(5000); } catch (Int
Intent intent = new Intent(Home.this, IndexActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
startActivity(intent);
finish();
问题在于,活动在白色活动中保持阻塞状态,5秒钟后更改活动
我犯了错误吗
如何创建淡入淡出动画?我怎样才能运行它?谢谢您不应该阻止主线程。它负责更新UI,如果您阻止它,用户界面将冻结
相反,请使用
处理程序及其postDelayed
方法。首先在动画文件夹中声明
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="1.0" />
</set>
然后在startActivity(意图)之后代码>
写入重写结束转换(animFadein,animFadeout)代码>
以下是详细资料:
fade_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:toAlpha="0.0" />
</set>
fade_out.xml
Thread.sleep()
会降低性能。您可以使用Handler
class'postDelayed()
方法执行以下操作:
Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(Home.this, IndexActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();
}
}, 5000L);
看看这个:“Thread.sleep()会降低性能”->不是真的,它做了它应该做的事情。@2Dee不,这不是让任何线程等待的有效方法。你能解释一下为什么你认为Thread.sleep()不是让任何线程等待的有效方法吗?我找不到任何支持这一说法的东西…@2Dee我也在寻找一个链接,我在上面读到了这个链接,可以给你发帖子。两三个经验丰富的家伙已经告诉我不要使用Thread.sleep()
其中一个也给我发了一个链接。我一找到就告诉你。是的,我就是这么想的,你不明白你在做什么。Commonware answer基本上说,如果您需要执行后台操作并完成UI工作,那么使用postDelayed比创建后台线程更有效。他从不暗示Thread.sleep会导致性能问题。您对Thread.suspend的定义也不正确,请参阅或。你只是在让你自己难堪。。。
Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(Home.this, IndexActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();
}
}, 5000L);