Android本身已经提供了ProgressDialog进度等待框,使用该Dialog,我们可以为用户提供更好的体验:在网络请求时,弹出此框等待网络数据。 不过,既然是为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服。那如何做呢,当然是我们自己定义一个ProgressDialog了。

可以先看下,接下来将实现的Dialog效果图:

步骤1:要定义布局文件,该布局文件即是Dialog的布局了

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/dialog_view"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="@drawable/dialog_load_bg"android:gravity="center"android:minHeight="100dp"android:minWidth="190dp"android:orientation="vertical"android:padding="10dp" ><ImageViewandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/publicloading" /><TextViewandroid:id="@+id/tipTextView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="10dp"android:textColor="#acacac"android:textSize="15sp" /></LinearLayout>

在布局文件中,我们只定义了两个组件,一个ImageView,用于显示旋转图,一个TextView,用于显示消息文本

步骤2: 定义动画,使得弹出框上的图片可以不停的旋转。

<?xml version="1.0" encoding="utf-8"?>
<set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android"><rotate android:interpolator="@android:anim/linear_interpolator"android:pivotX="50%"android:pivotY="50%"android:fromDegrees="0"android:toDegrees="+360"android:duration="1500"android:startOffset="-1"android:repeatMode="restart"android:repeatCount="-1"/>
</set>

步骤3: 实现自定义的Dialog逻辑

/*** 公用的弹出框* * @author lining*/
public class LoadingDialog {/*** 得到自定义的progressDialog* * @param context* @param msg* @return*/public static Dialog createLoadingDialog(Context context, String msg) {// 首先得到整个ViewView view = LayoutInflater.from(context).inflate(R.layout.loading_dialog_view, null);// 获取整个布局LinearLayout layout = (LinearLayout) view.findViewById(R.id.dialog_view);// 页面中的ImgImageView img = (ImageView) view.findViewById(R.id.img);// 页面中显示文本TextView tipText = (TextView) view.findViewById(R.id.tipTextView);// 加载动画,动画用户使img图片不停的旋转Animation animation = AnimationUtils.loadAnimation(context,R.anim.dialog_load_animation);// 显示动画img.startAnimation(animation);// 显示文本tipText.setText(msg);// 创建自定义样式的DialogDialog loadingDialog = new Dialog(context, R.style.loading_dialog);// 设置返回键无效loadingDialog.setCancelable(false);loadingDialog.setContentView(layout, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));return loadingDialog;}
}

代码注释已经很详细了,有一处需要注意的,就是在创建Dialog实例时,需要传递一个theme,该theme是Dialog的风格:

       <!-- 自定义loading dialog --><style name="loading_dialog" parent="android:style/Theme.Dialog"><item name="android:windowFrame">@null</item><item name="android:windowNoTitle">true</item><item name="android:windowBackground">@drawable/dialog_load_bg</item><item name="android:windowIsFloating">true</item><item name="android:windowContentOverlay">@null</item></style>

步骤4: 使用自定义的ProgressDialog
接下来,我们可以直接使用已经定义好的Dialog了,很简单,只需要将Dialog显示和关闭即可,建议将讲方法封装起来,放在BaseActivity(基类)中,方便随时调用。

 /*** 显示Dialog*/private void showDialog() {if (dialog == null) {dialog = LoadingDialog.createLoadingDialog(this, "正在加载中...");dialog.show();}}/*** 关闭Dialog*/private void closeDialog() {if (dialog != null) {dialog.dismiss();dialog = null;}}

通过上面步骤,我们即完成了自定义的ProgressDialog,当然,具体在项目中需要什么样的效果,可以调整。

源代码下载地址(免费):http://download.csdn.net/detail/zuiwuyuan/8407657

Android 自定义ProgressDialog相关推荐

  1. android 自定义progressdialog,Android 自定义progressDialog实现

    我们在项目中经常会遇到这样一个应用场景:执行某个耗时操作时,为了安抚用户等待的烦躁心情我们一般会使用进度条之类的空间,在android中让大家最 容易想到的就是progressbar或者progres ...

  2. android自定义图片加载,Android自定义ProgressDialog加载图片

    为了提高用户体验,我们肯定希望该Dialog能更加炫酷,让用户看着更舒服.那如何做呢,当然是我们自己定义一个ProgressDialog了. 一.使用系统加载框 mDialog = new Progr ...

  3. android 自定义progressdialog,android自定义ProgressDialog加载效果

    用来记录自己所用到的知识 前两天在做项目的时候发现有时候在访问网络数据的时候由于后台要做的工作较多,给我们返回数据的时间较长,所以老大叫我加了一个加载中的logo图用来提高用户体验. 于是就在网上找了 ...

  4. android 自定义progressdialog,自定义ProgressDialog

    最近工作中需要用到progressDialog,可是系统自带的黑色progressDialog又是其丑无比,无奈只能自己自定义了,在网上查看别人的例子,并自己整理了一份Demo: 先上图: MyPro ...

  5. Android 自定义progressDialog实现

    先上图看下效果: 1.String.xml 文件,progressDialog是继承与Dialog,先设置一下progressDialog的风格,设置背景透明色. <style name=&qu ...

  6. Android自定义类似ProgressDialog效果的Dialog

    2019独角兽企业重金招聘Python工程师标准>>> Android自定义类似ProgressDialog效果的Dialog. 方法如下: 1.首先准备两张自己要定义成哪样子的效果 ...

  7. android自定义对话框_Android自定义提醒对话框

    android自定义对话框 In this tutorial, we'll be discussing and implementing Custom Alert Dialogs in our And ...

  8. Android自定义ViewGroup基本步骤

    1.自定义属性,获取自定义属性,可参考 ​ Android自定义View基本步骤 ​ 2.onMeasure() 方法,for循环测量子View,根据子View的宽高来计算自己的宽 高 3.onDra ...

  9. Android自定义View —— TypedArray

    在上一篇中Android 自定义View Canvas -- Bitmap写到了TypedArray 这个属性 下面也简单的说一下TypedArray的使用 TypedArray 的作用: 用于从该结 ...

最新文章

  1. Java各种数据类型详细介绍及其区别
  2. cuDNN 5对RNN模型的性能优化
  3. PyQt5 技术篇-QTableWidget表格组件指定行的隐藏与显示控制实例演示,设置表格指定列的列宽方法
  4. PHP Warning: date(): It is not safe to rely on the system's timezone settings
  5. CNN训练注意事项与框架使用
  6. GoldenGate中使用FILTER,COMPUTE 和SQLEXEC命令
  7. 语法分析—自上而下分析
  8. PostgreSQL技术周刊第17期:PostgreSQL用户应掌握的高级SQL特性
  9. dos命令集--江南技术联盟
  10. 小客车年检(年审)相关的技术参数一览
  11. 机器人弹性伸缩算法-专利技术交底书
  12. 教育培训机构管理系统软件如何查看优惠券记录?
  13. 应用后台被回收,点击崩溃
  14. 【ClickHouse】表引擎详解
  15. 2016版连接池和装饰设计模式保存记录
  16. N、XR、XD、DR”各代表什么意思
  17. 住建部《城市信息模型(CIM)基础平台技术标准》正式发布,6月1日起实施
  18. 【Matlab 控制】拉氏变换和Z变换
  19. Effective C++读书摘要--Accustoming Youself to C++
  20. STM32学习笔记——GPIO,点灯之路第一步

热门文章

  1. 利用正则来判断一个数字的范围
  2. linux shell中文显示
  3. Client Dimensions , offsetHeight , scrollTop 属性详解
  4. Java NIO 选择器(Selector)的内部实现(poll epoll)
  5. 软件评测-信息安全-应用安全-资源控制-用户登录限制(中)
  6. 胜任素质--哈佛大学教授麦克里兰 (McClelland)有效地预测外交官实际工作业绩的人员选拔方法...
  7. java 偶数求和 数组_JAVA实现幻方
  8. es查询java代码如何排序_elasticsearch 查询聚合结果排序
  9. 数据结构树的基本操作_《数据结构》树的基本操作.doc
  10. 访问的属性未定义_V8中的快属性