欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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、接口回调推荐的方式

android 中ProgressDialog实现全屏效果的示例

项目要求实现的效果.png

android 中ProgressDialog实现全屏效果的示例

刚开始实现的效果.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();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。