Android动态更改布局

时间:2010-12-31 12:59:19

标签: android android-activity

我想在3秒后改变活动布局的情况。我可以这样做吗? 例如,应用程序以启动屏幕启动,运行3秒钟,然后自动将布局切换到应用程序的第一个屏幕布局。这应该发生在同一个活动,任何想法?

由于

4 个答案:

答案 0 :(得分:14)

我只使用一个xml布局。我只是在其中添加了一个代表我的介绍屏幕的额外RelativeLayout然后我在其上使用fadeOut Animation然后调用.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>

然后在我的活动中我有这个:

introLayout = (RelativeLayout) findViewById(R.id.introLayout);
Animation fadeOutAnim = AnimationUtils.loadAnimation(MyActivity.this, R.anim.fadeout);
introLayout.startAnimation(fadeOutAnim);
introLayout.setVisibility(View.GONE);

你可以通过将startAnimation()和setVisibility放在runnable中并使用postDelayed()作为markus提到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"/>

答案 1 :(得分:3)

只需使用ViewSwitcher,使用它可以在应用程序中的任意数量的布局之间切换,而无需执行任何setContentView。

答案 2 :(得分:2)

也许你可以使用postDelayed()调用来执行一个runnable,它将通过调用setContentView(R.xml.anotherxml)加载一个新的xml文件。

答案 3 :(得分:1)

这使我无法添加到adnorid的帖子中,ViewSwitcher本身只能在2个布局/视图之间切换。据我所知,这仅仅是因为它只有2个布局/视图硬编码而没有更深层含义。所以我建立了自己的MultipleViewSwitcher aka MVS,基于Android源码的原始ViewSwitcher.java。唯一需要做的改变是:

  1. 为MVS提供自己的
    • 布尔mFirstTime和
    • int mWhichChild
  2. 纠正硬编码到函数中任意数量的视图的动态处理
    • addView(...)
    • getNextView()
    • 复位()
  3. 这一切都可以在MultipleViewSwitcher.java中完成,就像魅力一样。

    我遇到了很多类似的东西,其中的android源代码可以被制作得更强大,很多次,几乎没有脑子编辑。我想知道为什么会这样,但这不适合这个帖子。

    喝彩!