android 中ProgressDialog实现全屏效果的示例
程序员文章站
2022-04-11 18:38:26
做项目的时候,直接用到了一个progressdialog,需要实现全屏的效果,如下图所示,功能跑起来的时候发现不是全屏,只是包裹了当前的内容,如下图所示,不过查找一些资料,...
做项目的时候,直接用到了一个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、布局
<?xml version="1.0" encoding="utf-8"?> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <com.tecsun.tsb.network.tool.animimageviewloader android:id="@+id/iv_load_anim" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/anim_all_load"/> <textview android:id="@+id/tv_all_load" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tip_load_pay_wait_result" android:textsize="26sp" android:textcolor="@color/c_white" android:layout_margintop="20dp"/> <textview android:id="@+id/tv_all_load_other" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tip_load_pay_wait_tip" android:textsize="26sp" android:textcolor="@color/c_orange_1" android:layout_margintop="20dp"/> <button android:id="@+id/btn_cancel" android:layout_height="75dp" android:layout_width="600dp" android:layout_margintop="20dp" android:text="取消查询" android:background="@drawable/btn_white_gray7_selector" android:textcolor="#000000" android:textsize="30sp" /> </linearlayout>
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(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
下一篇: 整得跟TM包皮过长似的
推荐阅读
-
Android中Fab(FloatingActionButton)实现上下滑动的渐变效果
-
Android中控件GridView实现设置行列分割线的方法示例
-
Android编程实现仿美团或淘宝的多级分类菜单效果示例【附demo源码下载】
-
Android中实现密码的隐藏和显示的示例
-
Android实现状态栏(statusbar)渐变效果的示例
-
Android 中TextView中跑马灯效果的实现方法
-
Android实现类似于PC中的右键弹出菜单效果
-
android中实现手机号码的校验的示例代码
-
Android中RecyclerView实现Item添加和删除的代码示例
-
Android中Fab(FloatingActionButton)实现上下滑动的渐变效果