很多人在项目中做长时间操作时,比如访问web service后台数据,都想显示一个透明无边框的圆形进度条,如下图:


不幸的是,Android系统自带的ProgressDialog,无论如何设置Theme、style,或者用java代码设置什么属性,边框都是去不掉的,至少我现在还不知道怎么去掉:

怎么办?

其实很简单,自定义一个ProgressDialog,加载自己的layout!

先上layout xml:

<?xml version="1.0" encoding="UTF-8"?><ProgressBar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:interpolator="@android:anim/linear_interpolator" />

android:interpolator="@android:anim/linear_interpolator"这句话表示进度条动画是匀速的。


再来定义一个CustomProgressDialog:

public class CustomProgressDialog extends ProgressDialog{public CustomProgressDialog(Context context) {super(context);}public CustomProgressDialog(Context context, int theme) {super(context, theme);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.dialog_progress);}public static CustomProgressDialog show(Context ctx){CustomProgressDialog d = new CustomProgressDialog(ctx);d.show();return d;}}

至于怎么用这个Dialog,就不用我教了吧。new一个CustomProgressDialog实例,然后调用继承来的show()方法也行,直接使用我们上面定义的静态show()方法也可,看个人偏好。

有几点需要说明一下:

1. 也可以继承AlertDialog,效果一样。

2. 虽然我们在onCreate()方法里已经加载了自己的layout,但并不妨碍调用基类的方法,设置title、content,效果和直接用基类ProgressDialog一样,无视自定义。

easy?本文只是提供一个最简单实现,相信已经能满足大部分的需求了,更深入的东西自己摸索去吧。

更多相关文章

  1. 关于Handler的理解
  2. Android的WebView简单使用实例(附Demo)
  3. Android(安卓)数据存储和文件使用案例分析
  4. ExifInterface使用,Android(安卓)2.0新增类
  5. android 使用AsyncTask实现异步下载文件
  6. android通过更改hosts免优酷广告方法
  7. 如何优雅的避免android(安卓)运行时崩溃
  8. android 热修复之类加载机制
  9. Android中Intent概述及使用

随机推荐

  1. Smalidea+IntelliJ IDEA/Android(安卓)St
  2. 初入Android单元测试 - JUnit
  3. 必读的android 文章- 收藏集 - 掘金
  4. Android adb bugreport工具分析和使用
  5. Android蓝牙系统分析
  6. Android视频编码的坑
  7. Android Studio3.0开发JNI流程------在An
  8. 也谈Android中WebView与HTML的JavaScript
  9. 利用Android的Matrix类实现J2ME的drawReg
  10. Android官方架构组件ViewModel+LiveData+