Android独立于Activity或者Fragment的LoadingDialog的实现
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>
分类:
android
标签:
android-widget
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库