我有一个简单的应用程序,它启动,从网络加载xml提要,您可以浏览新闻列表,然后阅读所选新闻项的详细信息。我想要做的是有一个启动画面,这意味着一旦你点击应用程序,它应该显示一个图像(在我的情况下是应用程序名称),然后只有在它们加载后才显示新闻列表。
我读到类似(我认为)的问题,通常人们会说使用FrameLayout,但我无法解决它。我不确定这是否可以在第一个启动的活动中完成,也许我应该只在一个活动中显示这个启动图像,然后才调用活动显示我的新闻列表?
我知道在iPhone上你可以在开发时在应用程序设置中设置启动画面,在Android应用程序的清单中有这个功能会很高兴...
答案 0 :(得分:35)
Android建议您在启动时执行冗长的计算时使用启动画面。以下是Android开发者网站 - 设计响应性:
的摘录“如果您的应用程序有一个耗时的初始设置阶段,请考虑显示启动画面或尽快呈现主视图并异步填写信息。在任何一种情况下,您都应该指出某些进展正在取得进展,以免用户认为应用程序被冻结。“ - Android开发者网站
您可以创建一个显示进度对话框的活动,同时使用AsyncTask从网络下载xml源,解析它,将其存储到数据库(如果需要),然后启动显示新闻源的活动。通过调用finish()
关闭splash活动这是一个骨架代码:
public class SplashScreen extends Activity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
// set the content view for your splash screen you defined in an xml file
setContentView(R.layout.splashscreen);
// perform other stuff you need to do
// execute your xml news feed loader
new AsyncLoadXMLFeed().execute();
}
private class AsyncLoadXMLFeed extends AsyncTask<Void, Void, Void>{
@Override
protected void onPreExecute(){
// show your progress dialog
}
@Override
protected Void doInBackground(Void... voids){
// load your xml feed asynchronously
}
@Override
protected void onPostExecute(Void params){
// dismiss your dialog
// launch your News activity
Intent intent = new Intent(SplashScreen.this, News.class);
startActivity(intent);
// close this activity
finish();
}
}
}
希望有所帮助!
答案 1 :(得分:2)
我知道这已经过时了但对于那些仍然面临这个问题的人来说,你可以使用这个简单的android-splash library来展示你的启动画面。
SplashBuilder
.with(this, savedInstanceState)
.show();
您可以设置在显示初始屏幕时执行的SplashTask
。