Android最简单的LoadingDialog

Activity的基类

public class BaseAcitivity extends Activity {

  private AlertDialog alertDialog;

  public void showLoadingDialog() {
      alertDialog = new AlertDialog.Builder(this).create();
      alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable());
      alertDialog.setCancelable(false);
      alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
          @Override
          public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_BACK)
                  return true;
              return false;
          }
      });
      alertDialog.show();
      alertDialog.setContentView(R.layout.loading_alert);
      alertDialog.setCanceledOnTouchOutside(false);
  }

  public void dismissLoadingDialog() {
      if (null != alertDialog && alertDialog.isShowing()) {
          alertDialog.dismiss();
      }
  }
}

Fragment的基类


public class BaseFragment extends Fragment {
    private AlertDialog alertDialog;
    public void showLoadingDialog() {
        alertDialog = new AlertDialog.Builder(getActivity()).create();
        alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable());
        alertDialog.setCancelable(false);
        alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_BACK)
                    return true;
                return false;
            }
        });
        alertDialog.show();
        alertDialog.setContentView(R.layout.loading_alert);
        alertDialog.setCanceledOnTouchOutside(false);
    }

    public void dismissLoadingDialog() {
        if (null != alertDialog && alertDialog.isShowing()) {
            alertDialog.dismiss();
        }
    }
}

XML:loading_alert

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_gravity="center_horizontal"
        style="@style/AppTheme.NoActionBar"
        />

</RelativeLayout>

在styles.xml中添加

<style name="AppTheme.NoActionBar">
        <item name="android:windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
</style>

代码已经全部贴完,只需要复制Activity,Fragment的基类。然后自己的去继承这些。
用showLoadingDialog()方法开启LoadingDialog
用dismissLoadingDialog()方法关闭LoadingDialog
可以在原有的基础上修改xml布局实现更漂亮的Loading

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 131,417评论 19 558
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-androi...
    eddy_wiki阅读 1,256评论 0 18
  • Android Studio JNI流程首先在java代码声明本地方法 用到native关键字 本地方法不用去实现...
    MigrationUK阅读 9,821评论 7 124
  • 今天去花卉市场买了些盆栽。 突然踏实了很多。有了目标,心才会安。
    独立才是最美阅读 23评论 0 0
  • 云手演太极,长啸入晨曦。 迭迭遂溪上,谁家横玉笛?
    郭国酬阅读 42评论 1 2