[英]android loading circle (spinner) between two activity
那是一个Progress Bar
。 您可以通过编程方式或使用 XML 中的小部件来创建它。
在 XML 中实现:
<ProgressBar
android:id="@+id/progress_loader"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="visible" />
要在 Java 中实现(使用您在评论中询问的Progress Dialog
,但您也可以使用Progress Bar
执行此操作):
ProgressDialog nDialog;
nDialog = new ProgressDialog(Login.this);
nDialog.setMessage("Loading..");
nDialog.setTitle("Get Data");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
在进行下一个活动之前,您应该dismiss()
进度条。
nDialog.dismiss();
只需在第二个活动中使用以下代码
<ProgressBar
android:id="@+id/progress_loader"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:visibility="visible" />
完成初始化后使可见性消失
您无法通过添加加载小部件来避免 UI 冻结。 您必须找到阻塞主线程的代码并将其移至工作线程。 查看Android 文档中的“Helper classes for threading”。 如果不显示您现有的代码(因此我们知道什么是阻塞的),我们无法进一步建议您。
其次,如果您想在视图事务之间显示加载小部件,您可以重组应用程序以使用片段。 一个活动可以用来在你的片段之间切换,它也可以包含可以在改变片段之前可见的小部件,一旦完成则不可见。
尝试这样做
ProgressDialog progressDoalog;
progressDoalog = new ProgressDialog(DetailsActivity.this);
progressDoalog.setMax(100);
progressDoalog.setMessage("Please wait...");
progressDoalog.setTitle("My Application");
progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressDoalog.show();
final Handler handle = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
progressDoalog.incrementProgressBy(1);
}
};
new Thread(new Runnable() {
@Override
public void run() {
try {
while (progressDoalog.getProgress() <= progressDoalog
.getMax()) {
Thread.sleep(30);
handle.sendMessage(handle.obtainMessage());
if (progressDoalog.getProgress() == progressDoalog
.getMax()) {
progressDoalog.dismiss();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.