我已按照以下链接自定义进度对话框:
How to center progress indicator in ProgressDialog easily (when no title/text passed along)
custom Progress Dialog in android?
我想在此图像中创建自定义进度对话框,但该代码未在我的应用程序中显示进度对话框。请指导我如何执行此操作?还指导我如何根据我的项目主题更改进度对话框的颜色?
答案 0 :(得分:7)
我这样做了:
将此课程用于自定义进度对话框:
public class CustomProgressbar extends Dialog {
private static CustomProgressbar mCustomProgressbar;
private CustomProgressbar mProgressbar;
private OnDismissListener mOnDissmissListener;
private CustomProgressbar(Context context) {
super(context);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.dialog_progressbar);
this.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
}
public CustomProgressbar(Context context, Boolean instance) {
super(context);
mProgressbar = new CustomProgressbar(context);
}
@Override
public void onBackPressed() {
super.onBackPressed();
if (mOnDissmissListener != null) {
mOnDissmissListener.onDismiss(this);
}
}
public static void showProgressBar(Context context, boolean cancelable) {
showProgressBar(context, cancelable, null);
}
public static void showProgressBar(Context context, boolean cancelable, String message) {
if (mCustomProgressbar != null && mCustomProgressbar.isShowing()) {
mCustomProgressbar.cancel();
}
mCustomProgressbar = new CustomProgressbar(context);
mCustomProgressbar.setCancelable(cancelable);
mCustomProgressbar.show();
}
public static void showProgressBar(Context context, OnDismissListener listener) {
if (mCustomProgressbar != null && mCustomProgressbar.isShowing()) {
mCustomProgressbar.cancel();
}
mCustomProgressbar = new CustomProgressbar(context);
mCustomProgressbar.setListener(listener);
mCustomProgressbar.setCancelable(Boolean.TRUE);
mCustomProgressbar.show();
}
public static void hideProgressBar() {
if (mCustomProgressbar != null) {
mCustomProgressbar.dismiss();
}
}
private void setListener(OnDismissListener listener) {
mOnDissmissListener = listener;
}
public static void showListViewBottomProgressBar(View view) {
if (mCustomProgressbar != null) {
mCustomProgressbar.dismiss();
}
view.setVisibility(View.VISIBLE);
}
public static void hideListViewBottomProgressBar(View view) {
if (mCustomProgressbar != null) {
mCustomProgressbar.dismiss();
}
view.setVisibility(View.GONE);
}
public void showProgress(Context context, boolean cancelable, String message) {
if (mProgressbar != null && mProgressbar.isShowing()) {
mProgressbar.cancel();
}
mProgressbar.setCancelable(cancelable);
mProgressbar.show();
}
}
<强> dialog_progressbar.xml 强>:
<?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:background="@drawable/bg_progressbar"
android:gravity="center"
android:padding="10dp" >
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
在 drawable 文件夹中添加以 bg_progressbar.xml 命名的可绘制文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#7F000000" />
<corners
android:bottomLeftRadius="5dp"
android:bottomRightRadius="5dp"
android:topLeftRadius="5dp"
android:topRightRadius="5dp" />
</shape>
现在,只要您想启动进度对话框,只需输入 1 行代码:
CustomProgressbar.showProgressBar(MainActivity.this, false);
每当您想取消进度对话框时,只需写下 1 行 代码:
CustomProgressbar.hideProgressBar();
希望这会对你有所帮助。