自定义progressdialog不显示怎么setmessage

android中ProgressDialog与ProgressBar的使用详解
字体:[ ] 类型:转载 时间:
本篇文章是对android中ProgressDialog与ProgressBar的使用进行了详细的分析介绍,需要的朋友参考下
一 、ProgressDialogProgressDialog与ProgressBar在UI中动态显示一个加载图标显示程序运行状态。ProgressDialog是继承自Android.app.ProgressDialog所设计的互动对话窗口,使用时,必须新建ProgressDialog对象,在运行时会弹出“对话框”作为提醒,此时应用程序后台失去焦点(即此时无法对UI组件进行操作),直到进程结束后,才会将控制权交给应用程序,如果在Activity当中不希望后台失焦,又希望提示User有某后台程序正处于忙碌阶段,那么ProgressBar就会派上用场了。 代码如下:ProgressDialog mProgressDialog = new ProgressDialog(TestProgerssDialogActivity.this);// 设置mProgressDialog风格mProgressDialog.setProgress(ProgressDialog.STYLE_SPINNER);//圆形mProgressDialog.setProgress(ProgressDialog.STYLE_HORIZONTAL);//水平// 设置mProgressDialog标题mProgressDialog.setTitle("提示");// 设置mProgressDialog提示mProgressDialog.setMessage("这是一个圆形进度条对话框");// 设置mProgressDialog进度条的图标mProgressDialog.setIcon(R.drawable.flag); // 设置mProgressDialog的进度条是否不明确//不滚动时,当前值在最小和最大值之间移动,一般在进行一些无法确定操作时间的任务时作为提示,明确时就是根据你的进度可以设置现在的进度值mProgressDialog.setIndeterminate(false);//mProgressDialog.setProgress(m_count++);// 是否可以按回退键取消mProgressDialog.setCancelable(true);// 设置mProgressDialog的一个ButtonmProgressDialog.setButton("确定", new DialogInterface.OnClickListener(){ & @Override & public void onClick(DialogInterface dialog, int which) & { &&& dialog.cancel(); && } });// 显示mProgressDialogmProgressDialog.show(); 代码如下:&mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {&&&@Override&&&public void onCancel(DialogInterface dialog) {&&&&// TODO Auto-generated method stub&&&&mProgressDialog.hide();&&&&webview.stopLoading();&&&}&&});当有ProgressDialog时,点击back时,会首先取消ProgressDialog ,以上代码可以监听进度条被取消事件(也就是点击Back键取消ProgressDialog),此时可以在这里作一些取消后台操作的处理。二、ProgressBarXML重要属性android:progressBarStyle:默认进度条样式android:progressBarStyleHorizontal:水平样式
重要方法getMax():返回这个进度条的范围的上限getProgress():返回进度getSecondaryProgress():返回次要进度incrementProgressBy(int diff):指定增加的进度isIndeterminate():指示进度条是否在不确定模式下setIndeterminate(boolean indeterminate):设置不确定模式下setVisibility(int v):设置该进度条是否可视
重要事件onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件 代码如下:&?xml version="1.0" encoding="utf-8"?&& &&LinearLayout xmlns:android="/apk/res/android"& &&&& android:orientation="vertical"&&&& android:layout_width="fill_parent"& &&&& android:layout_height="fill_parent"&& &&&& &TextViewandroid:layout_width="fill_parent"& android:layout_height="wrap_content"android:text="Welcome to blog" /&& &&&& &ProgressBarandroid:id="@+id/rectangleProgressBar"& style="?android:attr/progressBarStyleHorizontal" mce_style="?android:attr/progressBarStyleHorizontal"&& android:layout_width="fill_parent"android:layout_height="wrap_content"android:visibility="gone"/&&&&& &ProgressBarandroid:id="@+id/circleProgressBar"& style="?android:attr/progressBarStyleLarge" mce_style="?android:attr/progressBarStyleLarge"android:layout_width="wrap_content"android:layout_height="wrap_content"android:visibility="gone"/&&&&& &Button android:id="@+id/button"&&& android:text="Show ProgressBar"& &&& android:layout_width="wrap_content"&&& android:layout_height="wrap_content"&&& /&&&/LinearLayout&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具自定义ProgressDialog进度条对话框的实现 - 推酷
自定义ProgressDialog进度条对话框的实现
Android SDK已经提供有进度条组件ProgressDialog组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且ProgressDialog的可定制行也不太强,这时就需要我们自定义实现一个ProgressDialog。
通过看源码我们发现,ProgressDialog继承自Alertdialog,有一个ProgressBar和两个TextView组成的,通过对ProgressDialog的源码进行改进就可以实现一个自定义的ProgressDialog。
首先看一下自定义CommonProgressDialog和原生ProgressDialog的对比:
common_progress_dialog.xml 布局文件:
&FrameLayout xmlns:android=&/apk/res/android&
xmlns:tools=&/tools&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&&
&LinearLayout
android:layout_width=&798px&
android:layout_height=&460px&
android:orientation=&vertical&
android:background=&@drawable/common_progress_dialog_background&&
android:id=&@+id/progress_message&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:textSize=&44px&
android:layout_marginTop=&113px&
android:layout_gravity=&center_horizontal&
android:textColor=&#ffffff&
&ProgressBar
android:id=&@+id/progress&
style=&?android:attr/progressBarStyleHorizontal&
android:layout_width=&712px&
android:layout_height=&30px&
android:layout_marginTop=&100px&
android:layout_marginLeft=&47px&
android:layout_centerHorizontal=&true&
android:progressDrawable=&@drawable/common_progressdialog_progressbar_background&
&LinearLayout
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:orientation=&horizontal&
android:id=&@+id/progress_percent&
android:layout_width=&80px&
android:layout_height=&wrap_content&
android:textSize=&30px&
android:layout_marginLeft=&280px&
android:gravity=&center_horizontal&
android:textColor=&#ffffff&
android:id=&@+id/progress_number&
android:layout_width=&250px&
android:layout_height=&wrap_content&
android:layout_marginLeft=&120px&
android:textSize=&30px&
android:gravity=&center_horizontal&
android:textColor=&#ffffff&
&/LinearLayout&
&/LinearLayout&
&/FrameLayout&
common_progressdialog_progressbar_background.xml Progressbar进度条图片和背景图片设置
&?xml version=&1.0& encoding=&UTF-8&?&
&layer-list xmlns:android=&/apk/res/android&
android:id=&@android:id/background&
android:drawable=&@drawable/common_progress_dialog_progressbar3&
android:id=&@android:id/progress&
android:drawable=&@drawable/common_progress_dialog_progressbar2&
&/layer-list&
CommonProgressDialog.java类:
package com.johnny.
import java.text.NumberF
import android.app.AlertD
import android.app.ProgressD
import android.content.C
import android.os.B
import android.os.H
import android.os.M
import android.text.S
import android.text.SpannableS
import android.text.style.StyleS
import android.util.L
import android.view.LayoutI
import android.view.V
import android.widget.ProgressB
import android.widget.TextV
public class CommonProgressDialog extends AlertDialog {
private ProgressBar mP
private TextView mProgressN
private TextView mProgressP
private TextView mProgressM
private Handler mViewUpdateH
private int mM
private CharSequence mM
private boolean mHasS
private int mProgressV
private String TAG=&CommonProgressDialog&;
private String mProgressNumberF
private NumberFormat mProgressPercentF
public CommonProgressDialog(Context context) {
super(context);
// TODO Auto-generated constructor stub
initFormats();
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(mon_progress_dialog);
mProgress=(ProgressBar) findViewById(R.id.progress);
mProgressNumber=(TextView) findViewById(R.id.progress_number);
mProgressPercent=(TextView) findViewById(R.id.progress_percent);
mProgressMessage=(TextView) findViewById(R.id.progress_message);
LayoutInflater inflater = LayoutInflater.from(getContext());
mViewUpdateHandler = new Handler() {
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
int progress = mProgress.getProgress();
int max = mProgress.getMax();
double dProgress = (double)progress/(double)(1024 * 1024);
double dMax = (double)max/(double)(1024 * 1024);
if (mProgressNumberFormat != null) {
String format = mProgressNumberF
mProgressNumber.setText(String.format(format, dProgress, dMax));
mProgressNumber.setText(&&);
if (mProgressPercentFormat != null) {
double percent = (double) progress / (double)
SpannableString tmp = new SpannableString(mProgressPercentFormat.format(percent));
tmp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),
0, tmp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mProgressPercent.setText(tmp);
mProgressPercent.setText(&&);
View view = inflater.inflate(mon_progress_dialog, null);
mProgress = (ProgressBar) view.findViewById(R.id.progress);
mProgressNumber = (TextView) view.findViewById(R.id.progress_number);
mProgressPercent = (TextView) view.findViewById(R.id.progress_percent);
setView(view);
//mProgress.setMax(100);
onProgressChanged();
if (mMessage != null) {
setMessage(mMessage);
if (mMax & 0) {
setMax(mMax);
if (mProgressVal & 0) {
setProgress(mProgressVal);
private void initFormats() {
mProgressNumberFormat = &%1.2fM/%2.2fM&;
mProgressPercentFormat = NumberFormat.getPercentInstance();
mProgressPercentFormat.setMaximumFractionDigits(0);
private void onProgressChanged() {
mViewUpdateHandler.sendEmptyMessage(0);
public void setProgressStyle(int style) {
//mProgressStyle =
public int getMax() {
if (mProgress != null) {
return mProgress.getMax();
public void setMax(int max) {
if (mProgress != null) {
mProgress.setMax(max);
onProgressChanged();
public void setIndeterminate(boolean indeterminate) {
if (mProgress != null) {
mProgress.setIndeterminate(indeterminate);
mIndeterminate =
public void setProgress(int value) {
if (mHasStarted) {
mProgress.setProgress(value);
onProgressChanged();
mProgressVal =
public void setMessage(CharSequence message) {
// TODO Auto-generated method stub
//super.setMessage(message);
if(mProgressMessage!=null){
mProgressMessage.setText(message);
mMessage =
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
mHasStarted =
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
mHasStarted =
测试程序:
private void showDialog(){
mDialog = new CommonProgressDialog(this);
mDialog.setMessage(&正在下载&);
mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mDialog.setOnCancelListener(new OnCancelListener() {
public void onCancel(DialogInterface dialog) {
// TODO Auto-generated method stub
//cancel(true);
mDialog.show();
mDialog.setMax(100*);
mDialog.setProgress(65*);
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致

我要回帖

更多关于 .message.progress 的文章

 

随机推荐