我想创建一个“加载”屏幕,直到活动的布局完全加载,有没有办法做到这一点?
或者为当前主题定义自定义默认背景?
我想创建一个“加载”屏幕,直到活动的布局完全加载,有没有办法做到这一点?
或者为当前主题定义自定义默认背景?
您不应该阻止您的 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();
您可能会考虑使用AsyncTask
too 它自己处理大部分样板代码。
您可以根据需要更改背景,但您的应用程序将不稳定。如果您坚持这样做,只需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();
线程和过程是相当复杂的话题,你需要大量学习和实践。以下是我为您找到的一些资源:
2.工作线程博文
3.另一篇博文
使用两个视图设计您的活动。
-Loading layout.
-Second layout.
现在在 xml 中将第二个布局可见性设置为“消失”或“不可见”
现在在加载第二个布局之后..(使用异步任务,它将在后台进行加载。我正在使用伪代码):
class Task extends AsyncTask<Void,Void,Void>{
doInBackGround(){
Load your content
}
onPostExecute(){
set the visibility here;
}
将加载布局设置为“不可见”,将第二个布局设置为可见。
您可以在视图之间添加动画以使其看起来更好。