Android独立于Activity或者Fragment的LoadingDialog的实现

本文介绍了一个用于管理加载对话框的Java类LoadDialogMgr,该类通过单例模式实现,可在FragmentActivity中显示和关闭加载对话框。LoadTipDialog类作为AppCompatDialogFragment的子类,用于创建加载对话框的实例。
public class LoadDialogMgr {

  private static final String LOAD_TIP_DIALOG_TAG = "LoadTipDialog";
  private static LoadDialogMgr sMLoadDialogMgr;

  private LoadDialogMgr() {
  }

  public static LoadDialogMgr instance() {
    if (sMLoadDialogMgr == null) {
      sMLoadDialogMgr = new LoadDialogMgr();
    }
    return sMLoadDialogMgr;
  }

  public void showDialog(FragmentActivity activity) {
    FragmentManager manager = activity.getSupportFragmentManager();
    LoadTipDialog loadTipDialog;
    Fragment fragment = manager.findFragmentByTag(LOAD_TIP_DIALOG_TAG);
    if (fragment instanceof LoadTipDialog) {
      loadTipDialog = (LoadTipDialog) fragment;
    } else {
      loadTipDialog = LoadTipDialog.newInstance();
    }
    if (loadTipDialog.isAdded()) {
      return;
    }
    manager.beginTransaction()
        .remove(loadTipDialog)
        .add(loadTipDialog, LOAD_TIP_DIALOG_TAG)
        .commitAllowingStateLoss();
  }

  public void closeDialog(FragmentActivity activity) {
    FragmentManager manager = activity.getSupportFragmentManager();
    LoadTipDialog loadTipDialog;
    Fragment fragment = manager.findFragmentByTag(LOAD_TIP_DIALOG_TAG);
    if (fragment instanceof LoadTipDialog) {
      loadTipDialog = (LoadTipDialog) fragment;
      loadTipDialog.dismissAllowingStateLoss();
    }
  }

  public void showDialog() {
    Activity activity = ActivityUtil.getTopActivity();
    if (activity instanceof FragmentActivity) {
      showDialog((FragmentActivity) activity);
    }
  }

  public void closeDialog() {
    Activity activity = ActivityUtil.getTopActivity();
    if (activity instanceof FragmentActivity) {
      closeDialog((FragmentActivity) activity);
    }
  }

}

public class LoadTipDialog extends AppCompatDialogFragment {

private View mRootView;

public static LoadTipDialog newInstance() {
Bundle args = new Bundle();
LoadTipDialog fragment = new LoadTipDialog();
fragment.setArguments(args);
return fragment;
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
mRootView = inflater.inflate(R.layout.dialog_load_tip, container, false);
return mRootView;
}
}

//R.layout.dialog_load_tip
<?xml version="1.0> encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:padding="15dp"
android:background="#999999"
android:gravity="center"
android:orientation="vertical">
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="10dp"
android:text=" loading..."
android:textColor="@color/black"
android:textSize="16sp"/>
</LinearLayout>
 

 

转载于:https://www.cnblogs.com/yongfengnice/p/10458438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值