android 中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();
 }
}

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

(0)

相关推荐

  • Android ProgressDialog进度条使用详解

    进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍等待,进度条经常使用在APP下载应用.更新应用.加载网络数据中,使用频繁,常见的进度条有ProgressDialog.ProgressBar,这里只要介绍ProgressDialog. ProgressDialog读取文件进度解析主要涉及到一个知识: Handler消息处理机制, 文件字节流的操作, ProgressDialog类的使用 1.Handler消

  • Android ProgressDialog的实例详解

    Android ProgressDialog的实例详解 当自己做一些耗时操作时,希望给用户一些提示信息,告诉用户正在进行耗时操作,这时就可以用到ProgressDialog. 1.新建一个全局变量ProgressDialog private ProgressDialog mDialog; 2.设置ProgressDialog的相关参数: progressDialog = new ProgressDialog( ProgressDialogActivity.this); //设置进度条风格,风格为

  • Android ProgressDialog使用总结

    ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口. ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show(). // 方式一:new Dialog final ProgressDialog dialog = new ProgressDialog(this); dialog.show(); // 方式二:使用静态方式创建并显示,这

  • Android自定义ProgressDialog进度等待框

    Android本身已经提供了ProgressDialog进度等待框,使用该Dialog,我们可以为用户提供更好的体验:在网络请求时,弹出此框等待网络数据. 不过,既然是为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服.那如何做呢,当然是我们自己定义一个ProgressDialog了. 可以先看下,接下来将实现的Dialog效果图: 步骤1:要定义布局文件,该布局文件即是Dialog的布局了 <?xml version="1.0" encoding=&quo

  • 实例详解Android自定义ProgressDialog进度条对话框的实现

    Android SDK已经提供有进度条组件ProgressDialog组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且ProgressDialog的可定制行也不太强,这时就需要我们自定义实现一个ProgressDialog. 通过看源码我们发现,ProgressDialog继承自Alertdialog,有一个ProgressBar和两个TextView组成的,通过对ProgressDialog的源码进行改进就可以实现一个自定义的ProgressDialog. 1.效果: 首先

  • Android 自定义ProgressDialog进度条对话框用法详解

    ProgressDialog的基本用法 ProgressDialog为进度对话框.android手机自带的对话框显得比较单一,我们可以通过ProgressDialog来自己定义对话框中将要显示出什么东西. 首先看看progressDialog里面的方法 setProgressStyle:设置进度条风格,风格为圆形,旋转的. setTitlt:设置标题 setMessage:设置提示信息: setIcon:设置标题图标: setIndeterminate:设置ProgressDialog 的进度条

  • Android自定义ProgressDialog加载图片

    为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服.那如何做呢,当然是我们自己定义一个ProgressDialog了. 一.使用系统加载框 mDialog = new ProgressDialog(this); mDialog.setCancelable(true);//是否可以被取消 mDialog.setMessage("loading...");//加载显示的信息 mDialog.setProgressStyle(ProgressDialog.STYLE_S

  • android自定义ProgressDialog加载效果

    用来记录自己所用到的知识 前两天在做项目的时候发现有时候在访问网络数据的时候由于后台要做的工作较多,给我们返回数据的时间较长,所以老大叫我加了一个加载中的logo图用来提高用户体验. 于是就在网上找了许多大神写的案例,再结合自己的情况完成了一个Loading工具类 效果: ok,现在来说说怎么做的 先自定义一个类继承ProgressDialog public class Loading_view extends ProgressDialog { public Loading_view(Conte

  • android中ProgressDialog与ProgressBar的使用详解

    一 .ProgressDialogProgressDialog与ProgressBar在UI中动态显示一个加载图标显示程序运行状态.ProgressDialog是继承自Android.app.ProgressDialog所设计的互动对话窗口,使用时,必须新建ProgressDialog对象,在运行时会弹出"对话框"作为提醒,此时应用程序后台失去焦点(即此时无法对UI组件进行操作),直到进程结束后,才会将控制权交给应用程序,如果在Activity当中不希望后台失焦,又希望提示User有某

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

    做项目的时候,直接用到了一个ProgressDialog,需要实现全屏的效果,如下图所示,功能跑起来的时候发现不是全屏,只是包裹了当前的内容,如下图所示,不过查找一些资料,把问题解决了. ProgressDialog 继承自AlertDialog,AlertDialog继承自Dialog,实现DialogInterface接口. ProgressDialog的创建方式有两种,一种是new Dialog ,一种是调用Dialog的静态方法Dialog.show(). // 方式一:new Dial

  • Android中3种全屏方法及3种去掉标题栏的方法

    一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 复制代码 代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE);  //去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 复制代码 代码如下: <application android:icon="@drawable/icon" android:label="@str

  • android 中去掉窗口全屏显示的简单方法

    复制代码 代码如下: //去掉窗口        requestWindowFeature(Window.FEATURE_NO_TITLE);(一定要放在setContentView(R.layout.main)的前面)        //全屏显示        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

  • Android仿微信图片点击全屏效果

    废话不多说,先看下效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Intent传送,素材内容均来自网络,(感谢聪明的蘑菇) 图片都是Glide异步下的,下的,下的重要的事情说三次,然后就是用动画做放大操作然后显示出来了(并没有做下载原图的实现,反正也是一样 下载下来Set上去而且动画都不需要更简便). OK,我们来看分析下 obj,目录下分别创建了2个对象,一个用来使用来处理显示页面的图片尺寸信息以

  • Android实现无标题栏全屏的方法

    Android中实现全屏.无标题栏的两种办法,另附Android系统自带样式的解释 实现全屏无标题栏: 1.在xml文件中进行配置 AndroidManifest.xml中,找到需要全屏或设置成无标题栏的Activity,在该Activity进行如下配置即可. 实现全屏效果: android:theme="@android:style/Theme.NoTitleBar.Fullscreen"   实现无标题栏(但有系统自带的任务栏): android:theme="@andr

  • Android UI体验之全屏沉浸式透明状态栏样式

    前言: Android 4.4之后谷歌提供了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 身临其境 的体验.而Android 5.0之后谷歌又提出了 ColorPalette 的概念,让开发者可以自己设定系统区域的颜色,使整个 App 的颜色风格和系统的颜色风格保持统一.今天学习总结一下如何实现Android 4.4以上全屏沉浸式透明状态栏效果.先看下预期效果: 首先现分清楚哪部分是状态栏,哪部分是导

  • Android开发实现浏览器全屏显示功能

    本文实例讲述了Android开发实现浏览器全屏显示功能.分享给大家供大家参考,具体如下: 业务需求:浏览器设置中支持全屏显示的功能. 分析:只需要在设置界面上增加是否全屏的checkBox , 然后 BrowserActivity 中读取这个值, 来设置窗口的 Style. 修改: 1.  修改项目下的 res/xml 文件夹下的 browser_preferences.xml 文件, 添加 <CheckBoxPreference android:key="full_screen"

  • android中Webview实现截屏三种方式小结

    本人最近学习了android中Webview实现截屏三种方式,下面我来记录一下,有需要了解的朋友可参考.希望此文章对各位有所帮助. 第一种方式 通过调用webview.capturePicture(),得到一个picture对象,根据图像的宽和高创建一个Bitmap,再创建一个canvas,绑定bitmap,最后用picture去绘制. //获取Picture对象 Picture picture = wv_capture.capturePicture(); //得到图片的宽和高(没有reflec

  • SpringBoot实战项目之谷歌浏览器全屏效果实现

    项目场景: 客户需求文档中,要求在Win10系统下须使用Chrome谷歌浏览器展示页面,但高层相关方希望页面展示时可以实现全屏效果以提高用户体验. 对于谷歌浏览器的全屏功能来说,前端的实现已经不行了,之前谷歌浏览器基于安全的考虑封禁了任何调用全屏的事件(必须用户手势user gesture),有尝试过捕获用户手势触发点击事件的参数,但捕获到后发现事件参数太多(密密麻麻的ε=ε=ε=ε=ε=ε=┌(; ̄◇ ̄)┘),模拟起来太费劲会浪费太多时间(还是算了吧 ╮(๑•́ ₃•̀๑)╭). 由于Chro

  • Android编程实现WebView全屏播放的方法(附源码)

    本文实例讲述了Android编程实现WebView全屏播放的方法.分享给大家供大家参考,具体如下: 最近因为项目要用webview加载html5的视频,开始不能全屏播,做了很久才做出来!那按我的理解说下怎么实现全屏吧. 首先写布局文件activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

随机推荐