android加载圈(spinner)两个活动之间

ani*_*l.e 13 android android-spinner

我有一个主要活动,它有简单的按钮和与之关联的监听器.每个按钮都会打开一个新活动(意图).但是,在打开活动时,加载会导致UI冻结需要一些时间.我想通过简单地在它们之间添加一个加载圆(微调器)来避免这种情况.我搜索了很多帖子,但仍然找不到任何东西.

加载圈我的意思是这个

图片

Par*_*dha 19

那是一个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" />
Run Code Online (Sandbox Code Playgroud)

要在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();
Run Code Online (Sandbox Code Playgroud)

在进入下一个活动之前,您应该dismiss()使用进度条.

  nDialog.dismiss();
Run Code Online (Sandbox Code Playgroud)


Suh*_*omy 5

只需在第二个活动中使用以下代码

<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" />
Run Code Online (Sandbox Code Playgroud)

初始化完成后使可见性消失

  • 但是,如果我必须显示从 Activity 1 到 Activity 2 的进度条,并在加载第二个 Activity 后将其关闭,该怎么办? (2认同)

Cha*_*lie 5

您无法通过添加加载小部件来避免 UI 冻结。您必须找到阻塞主线程的代码并将其移至工作线程。查看Android 文档中的“线程辅助类”中的“线程处理辅助类” 。如果不显示您现有的代码(以便我们知道什么被阻止),我们无法就此向您提供进一步建议。

其次,如果您想在视图事务之间显示加载小部件,您可以重组您的应用程序以使用fragments。活动可用于在片段之间进行切换,它还可以包含小部件,该小部件可以在更改片段之前变为可见,并在完成后变为不可见。