Android dialogfragment封装loadingDialog

在Android开发中,经常需要在进行一些耗时操作时显示loading动画,以提高用户体验。为了方便统一管理loading动画的显示和隐藏,我们可以封装一个loadingDialog,并以DialogFragment的形式展示。下面我们就来详细介绍如何实现这一功能。

1. 创建LoadingDialogFragment类

首先我们需要创建一个LoadingDialogFragment类,该类继承自DialogFragment,并在其中实现loadingDialog的显示和隐藏逻辑。

public class LoadingDialogFragment extends DialogFragment {

    public LoadingDialogFragment() {
        // Required empty public constructor
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NO_TITLE, android.R.style.Theme_Holo_Light_Dialog);
    }

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

在上面的代码中,我们创建了一个LoadingDialogFragment类,并重写了onCreate和onCreateView方法。在onCreate方法中设置了Dialog的样式为无标题栏的样式,而在onCreateView方法中加载了loadingDialog的布局文件。

2. 创建loadingDialog布局文件

接下来我们需要创建loadingDialog的布局文件,用来展示loading动画。在res/layout目录下创建一个名为fragment_loading_dialog.xml的布局文件,内容如下:

<RelativeLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true" />

</RelativeLayout>

3. 显示loadingDialog

在需要显示loadingDialog的地方调用以下代码:

LoadingDialogFragment loadingDialog = new LoadingDialogFragment();
loadingDialog.show(getFragmentManager(), "loading_dialog");

4. 隐藏loadingDialog

在需要隐藏loadingDialog的地方调用以下代码:

loadingDialog.dismiss();

5. 完整示例代码

下面是一个完整的示例代码,演示了如何使用LoadingDialogFragment来显示和隐藏loadingDialog:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button showLoadingBtn = findViewById(R.id.showLoadingBtn);
        showLoadingBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                LoadingDialogFragment loadingDialog = new LoadingDialogFragment();
                loadingDialog.show(getSupportFragmentManager(), "loading_dialog");
            }
        });

        Button hideLoadingBtn = findViewById(R.id.hideLoadingBtn);
        hideLoadingBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Fragment loadingDialog = getSupportFragmentManager().findFragmentByTag("loading_dialog");
                if (loadingDialog != null) {
                    loadingDialog.dismiss();
                }
            }
        });
    }
}

通过上面的步骤,我们成功封装了一个loadingDialog,并且通过DialogFragment的形式展示。这样可以方便的在需要的地方调用显示和隐藏loadingDialog,提高了代码的复用性和可维护性。

总结

本文介绍了如何在Android开发中封装loadingDialog,并以DialogFragment的形式展示。通过封装loadingDialog,可以提高用户体验和代码的可维护性。希望本文对你有所帮助,谢谢阅读!

gantt
    title LoadingDialogFragment执行流程
    section 创建LoadingDialogFragment对象
    创建LoadingDialogFragment对象              :done, a1, 2021-10-16, 2021-10-17
    section 显示loadingDialog
    显示loadingDialog                          :done, a2, 2021-10-17, 2021-10-18
    section 隐藏loadingDialog
    隐藏loadingDialog                          :done, a3, 2021-10-18, 2021-10-19

通过上面的甘特图,我们可以清晰地看到LoadingDialogFragment的执行流程,包括创建对象、显示loadingDialog和隐藏loadingDialog等步骤。这有助于我们更好地理解整个流程。

希望本文对你有所帮助,谢