应用程序加载启动画面与进度条和文本显示加载百分比

时间:2015-01-25 07:49:09

标签: android layout splash

我正在使用启动画面为我的Android应用程序。屏幕从我的MainActivity.java开始,其中onCreate()方法包含以下代码。同样的活动类是在其onResume()方法中加载地图,并在其中加载一个新的布局,即activity_main.xml。那个xml有黑屏,没有背景屏幕。

  

MainActivity.java

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.loading_screen);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);
        textView = (TextView) findViewById(R.id.textView1);

        new Thread(new Runnable() {
            public void run() {
                while (progressStatus < 100) {
                    progressStatus += 1;

                    handler.post(new Runnable() {
                        public void run() {
                            progressBar.setProgress(progressStatus);
                            textView.setText(progressStatus + "/"
                                    + progressBar.getMax());
                        }
                    });
                    try {

                        Thread.sleep(200);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();

        compass = new CompassSensor(this, compassHandler);
    }

我对loading_screen.xml的布局如下。

  

loading_screen.xml

    <?xml version="1.0" encoding="utf-8"?>

<RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/splash_screen_loading" xmlns:android="http://schemas.android.com/apk/res/android">

        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleLarge"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="25dp" />

        <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignTop="@+id/progressBar1"
            android:layout_marginLeft="15dp"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </RelativeLayout>

我遇到的问题是在应用加载期间只显示黑屏。我试图调试问题,但我所有的努力都没用。 Plz帮助。

1 个答案:

答案 0 :(得分:1)

如果您希望进行视觉更改,则不应在onCreate中尝试此操作。在onCreate期间,没有向用户显示任何内容。我知道Thread.sleep(200)

您可能希望尝试在onResume中执行此操作,只需 调用super.onResume即可。你描述它的方式,甚至不应该显示R.layout.loading_screen

此外,如果您使用AsyncTask加载地图,开发者会让您知道如何发布进度。看看这个:AsyncTask。也许你可以将这个先前的工作(在R.layout.loading_screen上取得进展)添加到异步任务中。