如何在5秒后改变活动?

时间:2015-03-13 16:33:47

标签: 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 (InterruptedException e) {
            e.printStackTrace();
        }
        startActivity(intent);
        finish();

问题是活动在白色活动中被阻止,并在5秒后改变活动。

我犯了错误吗?

如何创建淡入淡出动画?我该怎么办呢?感谢

3 个答案:

答案 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>