我有一个情况,希望在3秒后更改Activity的布局。 我应该如何做呢?
例如,应用程序从启动画面开始运行,持续3秒钟,然后自动切换到应用程序的第一个屏幕布局。 这应该在同一个Activity中完成,有什么想法吗?
谢谢
谢谢
我只使用了一个xml布局文件来实现这个功能。我在其中添加了一个额外的RelativeLayout代表我的介绍界面,然后给它使用了一个fadeOut动画,最后调用.setVisibility(View.GONE)方法将其隐藏。
这是我的main.xml布局文件的一部分。
<RelativeLayout
android:id="@+id/introLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
>
<ImageView
android:id="@+id/logoImg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:src="@drawable/logo">
</ImageView>
</RelativeLayout>
然后在我的 Activity 中,我有这个:
introLayout = (RelativeLayout) findViewById(R.id.introLayout);
Animation fadeOutAnim = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fadeout);
introLayout.startAnimation(fadeOutAnim);
introLayout.setVisibility(View.GONE);
如markus所述,您可以将startAnimation()和setVisibility放入一个runnable中,并使用postDelayed()在3秒后运行。不过,请考虑在此介绍布局仍然在屏幕上时执行一些工作,以使用户不仅面临3秒的延迟。也许可以检查正在运行的应用程序版本是否为当前版本。
编辑:
您需要将fadout.xml文件添加到/res/anim/
(如果不存在,则创建anim目录)。这里是一个示例。
fadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="700"
android:fillAfter="true"/>
只需使用ViewSwitcher,就可以在应用程序中在任意数量的布局之间切换,而无需执行任何setContentView操作。
这让我能够补充adnorid的帖子,ViewSwitcher本身只能在两个布局/视图之间切换。这仅仅是因为硬编码了只有2个布局/视图,没有更深层次的意义,据我所知。因此,我基于Android源代码中的原始ViewSwitcher.java构建了自己的MultipleViewSwitcher,也称为MVS。唯一需要进行的更改是:
这些都可以在MultipleViewSwitcher.java中完成,并且像魅力一样工作。
我遇到了很多类似的问题,使用近乎无脑的编辑可以使Android源代码变得更加强大。我想知道为什么会这样,但这不是这个帖子的主题。
干杯!
/res/anim/
文件夹中,请参考我的编辑。 - FoamyGuy