1

我想创建一个“加载”屏幕,直到活动的布局完全加载,有没有办法做到这一点?

或者为当前主题定义自定义默认背景?

4

2 回答 2

0

您不应该阻止您的 UI 线程。在我看来,您正在这样做并且您可能会得到 ANR(应用程序未响应异常)。如果您正在对 UI 线程进行更新并且这些更新很繁重并且需要采取行动,那么您必须使用 worker threads.Worker 线程异步更新 UI 线程而不阻塞它。

这个例子:

class workerThread extends Thread {
        public void run() {
                    final View play = getActivity()
                            .findViewById(R.id.play);
                    play.post(new Runnable() {
                        public void run() {
                        //put all your time taking tasks inside this post runnable.Here you may implement updateprogressbar etc
                            play.performClick();
                        }
                    });
                }   
        }
    workerThread = new workerThread();
    workerThread.start();

您可能会考虑使用AsyncTasktoo 它自己处理大部分样板代码。

您可以根据需要更改背景,但您的应用程序将不稳定。如果您坚持这样做,只需ProgressDialog在您的视图中创建一个并根据需要更新它:

Example:
mProgressDialog = new ProgressDialog(getActivity());
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    mProgressDialog.setTitle(R.string.progress_dialog_loading);
    mProgressDialog.setCancelable(true);
    mProgressDialog
            .setOnCancelListener(new DialogInterface.OnCancelListener() {
                public void onCancel(DialogInterface dialog) {
                    mLoadingKeepGoing = false;
                }
            });

    mProgressDialog.show();

线程和过程是相当复杂的话题,你需要大量学习和实践。以下是我为您找到的一些资源:

1. android doc的进程和线程

2.工作线程博文

3.另一篇博文

4.关于stackoverflow

于 2013-05-31T09:55:17.027 回答
0

使用两个视图设计您的活动。

-Loading layout.
-Second layout. 

现在在 xml 中将第二个布局可见性设置为“消失”或“不可见”

现在在加载第二个布局之后..(使用异步任务,它将在后台进行加载。我正在使用伪代码):

  class Task extends AsyncTask<Void,Void,Void>{
  doInBackGround(){
   Load your content
  }
  onPostExecute(){
  set the visibility here;
  }

将加载布局设置为“不可见”,将第二个布局设置为可见。

您可以在视图之间添加动画以使其看起来更好。

于 2013-05-31T10:14:15.683 回答