2011-08-16 42 views
1

也许这不是最好的方法,但我的应用程序使用onCreate加载/准备ViewAnimator相当多的布局,所以在应用程序启动后,我的应用程序的每个屏幕都准备好使用了。所以改变不同的屏幕是平稳和快速的。有没有办法在onCreate期间显示splashscreen?

该方法的缺点是,第一个布局出现需要5秒。确切地说--的所有屏幕都是以XML布局定义的,我暗示它们在onCreate期间被夸大了。

我的应用程序必须有一个闪屏,所以我的问题是,如果有一些方法可以使用这些5秒来显示一些图像?

编辑:

感谢您的回答,我想出了这个简单的解决方案:

Activity activity; 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_splash); 
    activity = this; 
    LinearLayout splash_layout = (LinearLayout) this.findViewById(R.id.splash_layout); 

    // after 1 second of splash screen, start initializing everything 
    splash_layout.postDelayed(new Runnable() 
    { 
     public void run() 
     { 
      activity.setContentView(R.layout.main); 

      // Here init whole layout and all class 
      // During initialization, the splashscreen is still visible 
     } 
    }, 1000); 
} 

回答

2

我不相信任何屏幕上是可见的,直到之后的onResume已退出和主线程开始服务消息。你可以使用2个.xml布局吗?一个在启动时立即加载启动画面,然后在活动开始后启动并使用布局充气器加载屏幕的其余部分?

+0

你是绝对正确的;我删去了我的回答,赞成这个。询问问题的人应该做的是创建一个新的活动,显示启动画面,然后启动显示主要布局的活动。这样,将显示启动画面,直到显示主要布局。 –

+0

是的,这看起来像迄今为止我唯一的选择。首先,实现这一点似乎很困难,但如果我只有一个main.xml,那么它应该可以工作。正如我所看到的,还有以视图作为参数的setContentView()。 –

+0

它的工作原理!我使用简单的解决方案更新了我的问题。谢谢。 –

1

如果我是你,我会提出长期运行出Activity.onCreate的任务()方法,因为它可能导致ANR =应用程序无响应错误,对另一个线程说。

+0

另外这个。出于这个原因,不要让应用程序挂起五秒钟。 – DeeV

+0

谢谢你的建议:) –

0

要在我的应用程序中实现这种效果,我只需使用任何想要的图像即可。并使用淡入淡出动画。

检查出一个可能的解决方案这一问题:Android change layout dynamically

相关问题