[英]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.