JaV*_*did 80 android splash-screen
我正在开发一个应用程序,它基本上在应用程序本身的开始下载大量数据并将其显示在ListActivity中.我打算做的是显示启动画面,直到数据加载完毕.
直到现在我的所有尝试都是徒劳的.我试过anddev.org提到的方法,但我的问题是主Activity应该开始但是Splash Screen应该是可见的,直到我填充我的ListActivity.所以简而言之,我必须完成以下步骤:
希望你明白它是什么样的....
Mar*_*k B 89
问题很可能是你在所有正在完成的工作中运行启动画面(某种类型的Dialog,例如我假设的ProgressDialog).这将使得初始屏幕的视图不被更新,这可以使其甚至不被显示到屏幕上.您需要显示启动屏幕,启动AsyncTask实例以下载所有数据,然后在任务完成后隐藏启动屏幕.
所以你的Activity的onCreate()方法只会创建一个ProgressDialog并显示它.然后创建AsyncTask并启动它.我会将AsyncTask作为主Activity的内部类,因此它可以将已下载的数据存储到Activity中的某个变量中,并在其onPostExecute()方法中关闭ProgressDialog.
不知道如何在不显示代码的情况下再详细说明,所以这里是:
public class MyActivity extends Activity {
private ProgressDialog pd = null;
private Object data = null;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Show the ProgressDialog on this thread
this.pd = ProgressDialog.show(this, "Working..", "Downloading Data...", true, false);
// Start a new thread that will download all the data
new DownloadTask().execute("Any parameters my download task needs here");
}
private class DownloadTask extends AsyncTask<String, Void, Object> {
protected Object doInBackground(String... args) {
Log.i("MyApp", "Background thread starting");
// This is where you would do all the work of downloading your data
return "replace this with your data object";
}
protected void onPostExecute(Object result) {
// Pass the result data back to the main activity
MyActivity.this.data = result;
if (MyActivity.this.pd != null) {
MyActivity.this.pd.dismiss();
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
显然有一些你需要填写的部分,但这个代码应该运行并给你一个很好的起点(原谅我,如果有代码错误,我无法访问Android SDK,因为我正在键入此目前).
在这里和这里可以找到关于Android中AsyncTasks主题的一些更好的阅读.
Raa*_*nan 59
仅供参考,这是我发现制作启动画面的最佳方式:http: //android-developers.blogspot.de/2009/03/window-backgrounds-ui-speed.html
我正在搜索这个问题很长一段时间,来自orroids docs ..如果你想避免那些黑屏,你需要用windowBackground创建一个主题,所以:
<resources>
<style name="Theme.Shelves" parent="android:Theme">
<item name="android:windowBackground">@drawable/background_shelf</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
并将此主题设置为您主要活动的主题...... TADA,第一秒的闪屏.
如果你想要一个复杂的背景,而不仅仅是一个可以拉伸填充的图像,你可以使用Drawables,这里是一个图层列表的例子,它将使徽标以黑色背景为中心:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@color/black">
</item>
<item>
<bitmap
android:gravity="center"
android:src="@drawable/logo"
android:tileMode="disabled" >
</bitmap>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
88104 次 |
| 最近记录: |