我用我的个人徽标制作了一种索引活动。 我希望在5秒后改变活动。 所以我准备了2个布局,我运行了启动器。 在启动器活动中,我设置了:
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秒后改变活动。
我犯了错误吗?
如何创建淡入淡出动画?我该怎么办呢?感谢
答案 0 :(得分:2)
你永远不应该阻止主线程。它负责更新UI,如果你阻止它,用户界面将冻结。
相反,请使用Handler
及其postDelayed
方法。
答案 1 :(得分:1)
Thread.sleep()
会降低性能。您可以使用Handler
课程'执行此操作的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);
答案 2 :(得分:0)
首先在动画文件夹中声明这一点。
<?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>
然后在你要去的地方的acitivity的java文件中声明一个动画:
Animation animfadein,animFadeout;
animFadein = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_in);
animFadeout = AnimationUtils.loadAnimation(getApplicationContext(),
R.anim.fade_out);
然后在startActivity(Intent);
写overridePendingTransition(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>