欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android中ProgressDialog与ProgressBar的使用详解

程序员文章站 2023-10-19 14:13:47
一 、progressdialogprogressdialog与progressbar在ui中动态显示一个加载图标显示程序运行状态。progressdialog是继承自an...

一 、progressdialog
progressdialog与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的一个button
mprogressdialog.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),此时可以在这里作一些取消后台操作的处理。

二、progressbar
xml重要属性
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="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical"
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 

     <textview
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:text="welcome to blog" /> 
     <progressbar
android: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"
/>
     <progressbar
android: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>