自定义ProgressDialog的实现
2016-06-06 16:17
513 查看
要实现一个等待的圆形进度条效果,转圈的效果。可以有两种方式,第一种用progressbar,第二种用progressdialog,而progressbar在运行时用户是可以操作其他控件的。在不想让用户操作其他控件只能等待的情况下,我们用progressdialog来实现此功能。
又由于自带的progressdialog比较丑,我们想最终实现屏幕上只有一个圈和一条文字的效果如图:
下面来看代码实现:
自定义dialog并继承Dialog,创建一个dialog类方便使用
下面是引用的自定义的style:
然后是要加载的自定义布局:progress_dialog.xml
此布局我说说明一下,由于我没有自己的等待图片,所以我就引用了系统自带的progressbar来作为要显示的图片,此效果感觉还不错。就是中间那个旋转的大圈。
自定义的progressdialog已经完成,那么下面就是使用了,在需要的地方使用他。
比如我是在登录的时候向服务器发送数据的时候弹出这个progressdialog在接受到数据之后让这个dialog消失。下面是代码:
在需要的时候弹出进度框
在任务完成之后关闭对话框
又由于自带的progressdialog比较丑,我们想最终实现屏幕上只有一个圈和一条文字的效果如图:
下面来看代码实现:
自定义dialog并继承Dialog,创建一个dialog类方便使用
import android.app.Dialog; import android.content.Context; import android.view.Gravity; import cn.tcb.destmonitoronline.R; /** * 自定义progressdialog的类 * Created by renchongbin on 2016/6/6. */ public class CustomProgressDialog extends Dialog{ private Context context = null; private static CustomProgressDialog customProgressDialog = null; public CustomProgressDialog(Context context){ super(context); this.context = context; } public CustomProgressDialog(Context context, int theme) { super(context, theme); } //创建dialog public static CustomProgressDialog createDialog(Context context){ customProgressDialog = new CustomProgressDialog(context,R.style.CustomProgressDialog);//应用自定义style customProgressDialog.setContentView(R.layout.progress_dialog);//加载自定义布局 customProgressDialog.getWindow().getAttributes().gravity = Gravity.CENTER;//居中 // customProgressDialog.setCancelable(false);//设置能否取消,默认是True,也就是点击其他地方就会取消这个dialog的显示 return customProgressDialog; } }
下面是引用的自定义的style:
<style name="CustomProgressDialog" parent="@style/prog_dialog"> <item name="android:windowBackground">@android:color/transparent</item><!-- 背景透明--> <item name="android:windowNoTitle">true</item> <!-- 没有标题--> </style> <style name="prog_dialog" parent="@android:style/Theme.Holo.Dialog"> <item name="android:windowFrame">@null</item><!-- 没有边框--> <item name="android:windowIsFloating">true</item><!-- 浮在ACTIVITY上--> <item name="android:windowContentOverlay">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> </style>
然后是要加载的自定义布局:progress_dialog.xml
<?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"> <ProgressBar android:id="@+id/progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Large"/> <TextView android:id="@+id/id_tv_loadingmsg" android:text="@string/wait_a_minute" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:layout_marginTop="5dp" /> </LinearLayout>
此布局我说说明一下,由于我没有自己的等待图片,所以我就引用了系统自带的progressbar来作为要显示的图片,此效果感觉还不错。就是中间那个旋转的大圈。
自定义的progressdialog已经完成,那么下面就是使用了,在需要的地方使用他。
比如我是在登录的时候向服务器发送数据的时候弹出这个progressdialog在接受到数据之后让这个dialog消失。下面是代码:
//我的登录activity public class LoginActivity extends AppCompatActivity { private IntentFilter mLoginResultIntentFilter; private LoginResultReceiver mLoginResultReceiver; private EditText mEditUser; private EditText mEditPw; private CheckBox mSavePassword; private CustomProgressDialog progressDialog = null;//声明自定义弹出框
在需要的时候弹出进度框
progressDialog = CustomProgressDialog.createDialog(LoginActivity.this); progressDialog.show();
在任务完成之后关闭对话框
progressDialog.cancel();
相关文章推荐
- flex 控件的重要属性
- DWZ刷新dialog解决方法
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- php结合安卓客户端实现查询交互实例
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述
- WinForm实现移除控件某个事件的方法