做项目的时候,直接用到了一个ProgressDialog,需要实现全屏的效果,如下图所示,功能跑起来的时候发现不是全屏,只是包裹了当前的内容,如下图所示,不过查找一些资料,把问题解决了。
ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口。
ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show()。
// 方式一:new Dialog final ProgressDialog dialog = new ProgressDialog(this); dialog.show(); // 方式二:使用静态方式创建并显示,这种进度条只能是圆形条,设置title和Message提示内容 ProgressDialog dialog2 = ProgressDialog.show(this, "提示", "正在登陆中"); // 方式三 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean indeterminate设置是否是不明确的状态 ProgressDialog dialog3 = ProgressDialog.show(this, "提示", "正在登陆中", false); // 方式四 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数boolean cancelable 设置是否进度条是可以取消的 ProgressDialog dialog4 = ProgressDialog.show(this, "提示", "正在登陆中", false, true); // 方式五 使用静态方式创建并显示,这种进度条只能是圆形条,这里最后一个参数 DialogInterface.OnCancelListener // cancelListener用于监听进度条被取消 ProgressDialog dialog5 = ProgressDialog.show(this, "提示", "正在登陆中", true, true, cancelListener);
方式五中需要一个cancelListener,代码如下:
private OnCancelListener cancelListener = new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "进度条被取消", Toast.LENGTH_LONG).show(); } };
本文的知识点:
1、实现ProgressDialog的全屏效果
2、接口回调推荐的方式
项目要求实现的效果.png
刚开始实现的效果.png
代码实现:
1、布局
2、核心代码
Window window = getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.gravity = gravity; window.setAttributes(layoutParams);
3、接口回调的实现方式
public OnClickCancelListener mOnClickCancelListener; public void setOnClickCancelListener(OnClickCancelListener onClickCancelListener){ this.mOnClickCancelListener = onClickCancelListener; } public interface OnClickCancelListener{ void singleClick(); }
4、接口回调的调用方式
mLoadingProgressDialog.setOnClickCancelListener(new LoadingProgressDialog.OnClickCancelListener() { @Override public void singleClick() { LogUtil.d(TAG,"点击取消查询==========="); isContinueQuery = true; dismissPayResultLoadingDialog(); } });
5、全部代码实现
public class LoadingProgressDialog extends ProgressDialog { private static final String TAG = LoadingProgressDialog.class.getSimpleName(); public LoadingProgressDialog(Context context) { super(context,R.style.style_custon_dialog); setCancelable(false); setCanceledOnTouchOutside(false); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.custom_dialog_all_loading); Window window = getWindow(); WindowManager.LayoutParams layoutParams = window.getAttributes(); layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT; layoutParams.gravity = gravity; window.setAttributes(layoutParams); Button benCancel = (Button) findViewById(R.id.btn_cancel); benCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { LogUtil.d(TAG,"benCancel================"); mOnClickCancelListener.singleClick(); } }); } public OnClickCancelListener mOnClickCancelListener; public void setOnClickCancelListener(OnClickCancelListener onClickCancelListener){ this.mOnClickCancelListener = onClickCancelListener; } public interface OnClickCancelListener{ void singleClick(); } }
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔