也许这不是最好的方法,但我的应用程序使用onCreate
来加载/准备很多布局到ViewAnimator
,所以在应用程序启动后,我的应用程序的每个屏幕都准备好使用。因此,改变不同的屏幕是平稳而快速的。
此方法的缺点是,第一个布局需要5秒钟才能显示。确切地说 - ViewAnimator
的所有屏幕都是在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);
}
答案 0 :(得分:2)
我不相信在onResume退出并且主线程开始为消息提供服务之后,任何屏幕都将可见。你能用2个.xml版面吗?一个在启动时立即加载启动画面,然后在活动开始后用布局充气器开始加载屏幕的剩余部分?
答案 1 :(得分:1)
如果我是你,我会将长时间运行的任务移出Activity.onCreate()方法,因为它可能导致ANR =应用程序无响应错误,比如对另一个线程。
答案 2 :(得分:0)
要在我的应用中实现此效果,我只需使用包含您想要的任何图像的视图。并使用淡入和淡出动画。
查看此问题,找出一个可能的解决方案:Android change layout dynamically