zoukankan      html  css  js  c++  java
  • Android progressbar 详解

    [原文Android学习笔记(十六)进度条]

     

    ProgressBar

     XML属性

    属性名
    描述
    android:animationResolution
    超时的动画帧之间的毫秒 ;必须是一个整数值,如“100”。
    android:indeterminate
    是否允许使用不确定模式,在不确定模式下,进度条动画无限循环
    android:indeterminateBehavior
    定义当进度达到最大时,不确定模式的表现;
    该值必须为repeat或者cycle,repeat表示进度从0重新开始;cycle表示进度保持当前值,并且回到0
    android:indeterminateDrawable
    定义不确定模式是否可拉
    android:indeterminateDuration
    时间不定的动画
    android:indeterminateOnly
    限制为不定模式
    android:interpolator

    android:max
    定义进度的最大值
    android:maxHeight
    进度Widget最大高
    android:miniHeight
    进度Widget最小高
    android:maxWidth
    进度Widget最大宽
    android:minWidth
    进度Widget最小宽
    android:mirrorForRtl
    定义了相关画板如果需要反映在RTL模式
    android:progress
    设置进度的默认值,值介于0到max之间
    android:progressDrawable

    android:secondaryProgress
    定义二级进度值,值介于0到max。该进度在主进度和背景之间。比如用于网络播放视频时,二级进度用于表示缓冲进度,主进度用于表示播放进度。

    进度条的样式

    Widget.ProgressBar.Horizontal  长形进度

    Android xml  布局:
    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.      android:id="@+id/progress_bar"  
    3.      android:layout_width="fill_parent"  
    4.      android:layout_height="wrap_content"  
    5.      style="@android:style/Widget.ProgressBar.Horizontal "  
    6.      />  
    源码:
    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. private ProgressBar mProgress;  
    2.  private int mProgressStatus = 0;  
    3.  private Handler mHandler = new Handler();  
    4.  @Override  
    5.  protected void onCreate(Bundle savedInstanceState) {  
    6.   super.onCreate(savedInstanceState);  
    7.   setContentView(R.layout.activity_main);  
    8.   mProgress = (ProgressBar) findViewById(R.id.progress_bar);  
    9.   new Thread(new Runnable() {  
    10.    @Override  
    11.    public void run() {  
    12.     while(mProgressStatus < 100){  
    13.      mProgressStatus = doWork();  
    14.      mHandler.post(new Runnable(){  
    15.       @Override  
    16.       public void run() {  
    17.        mProgress.setProgress(mProgressStatus);  
    18.       }  
    19.      });  
    20.     }  
    21.    }  
    22.   }).start();  
    23.  }  
    效果图:

    带第二进度的进度条

    xml配置如下:
    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.     android:id="@+id/progress_bar_with_second"  
    3.     style="@android:style/Widget.ProgressBar.Horizontal"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="wrap_content"  
    6.     android:progress="40"  
    7.     android:secondaryProgress="70"  
    8.     android:paddingTop="20dp"  
    9.     android:paddingBottom="20dp"/>  
    这里我们设置了初始的进度为40,android:progress的值在mini和max之间即mini<=progressvalue<=max
    设置了第二进度条的进度值为70,该值也在mini和max之间。
    效果如下:

    不确定模式进度条

    xml配置文件:
    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.       android:id="@+id/progress_bar_indeterminate"  
    3.       style="@android:style/Widget.ProgressBar.Horizontal"  
    4.       android:layout_width="fill_parent"  
    5.       android:layout_height="wrap_content"  
    6.       android:indeterminate="true"  
    7.       android:indeterminateBehavior="cycle"  
    8.       android:paddingBottom="20dp"  
    9.       android:paddingTop="20dp"  
    10.       android:progress="40" />  
    这里通过android:indeterminate="true"设置了当前为无模式进度条
    效果如图:

    普通圆形进度:Widget.ProgressBar.Inverse

    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.         android:id="@+id/progress_bar1"  
    3.         style="@android:style/Widget.ProgressBar.Inverse"  
    4.         android:layout_width="fill_parent"  
    5.         android:layout_height="wrap_content"  
    6.         android:progress="50"  
    7.         android:background="#ff00ff"  
    8.         android:paddingTop="4dp" />  
    通过android:backgroup设置了背景色
    效果如图:

    普通小圆形进度条

    Widget.ProgressBar.Small   或 Widget.ProgressBar.Small.Inverse
     xml配置:
    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.     android:id="@+id/progress_bar2"  
    3.     style="@android:style/Widget.ProgressBar.Small"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="wrap_content"  
    6.     android:background="#ff00ff"  
    7.     android:paddingBottom="20dp"  
    8.     android:paddingTop="20dp"  
    9.     android:progress="50" />  
    效果图:

    大号圆形进度条

    Widget.ProgressBar.Large 或 Widget.ProgressBar.Large.Inverse
    XML配置:
    [html] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. <ProgressBar  
    2.     android:id="@+id/progress_bar4"  
    3.     style="@android:style/Widget.ProgressBar.Large"  
    4.     android:layout_width="fill_parent"  
    5.     android:layout_height="wrap_content"  
    6.     android:background="#ff00ff"  
    7.     android:paddingBottom="20dp"  
    8.     android:paddingTop="20dp"  
    9.     android:progress="50" />  
    效果图如下:

    ProgressDialog

    进度条对话框的设置

    先看源码:
    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. Button btn3 = (Button) findViewById(R.id.progress_dlg_3);  
    2.  btn3.setOnClickListener(new OnClickListener(){  
    3.   @Override  
    4.   public void onClick(View v) {  
    5.    ProgressDialog progressDlg = new ProgressDialog(  
    6.      ProgressDlg.this);  
    7.    progressDlg.setTitle("进度对话框测试");  
    8.    progressDlg.setMessage("测试进度");  
    9.    progressDlg.setIcon(R.drawable.ic_launcher);  
    10.    progressDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);  
    11.    progressDlg.setCancelable(false);  
    12.    progressDlg.show();  
    13.   }});  
    这里我们设置了在Button的点击事件时,弹出进度对话框progressDlg;
    其中ProgressDlg.this表示当前的Activity
    方法setTitle 设置当前进度对话框的标题
    setMessage 设置当前进度对话框的消息
    setIcon  设置进度对话框的图标
    setProgressStyle设置进度条类型。包括ProgressDialog.STYLE_SPINNER(圆形 (默认))、ProgressDialog.STYLE_HORIZONTAL(长条形)
    setCancelable() 表示是否可按回退键取消对话框。true表示可以通过回退键取消对话框,否则不能通过回退键取消对话框。
    效果图如下:
    ProgressDialog.STYLE_HORIZONTAL类型进度条效果如下:

    给进度对话框添加上按钮

    可以个进度对话框添加三种按钮:
    DialogInterface.BUTTON_POSITIVE  确定
    DialogInterface.BUTTON_NEGATIVE 取消
    DialogInterface.BUTTON_NEUTRAL 普通
    添加按钮的方法如下:
    [java] view plain copy
     在CODE上查看代码片派生到我的代码片
    1. progressDlg.setButton(DialogInterface.BUTTON_NEUTRAL,  
    2.      "取消", new DialogInterface.OnClickListener() {  
    3.       @Override  
    4.       public void onClick(DialogInterface dialog,  
    5.         int which) {  
    6.        if(which == DialogInterface.BUTTON_NEGATIVE){  
    7.         System.out.println("Click negative");  
    8.        }  
    9.       }  
    10.      });  
    第一个参数制定按钮类型,第二个参数指定响应按钮点击事件的监听
    效果如下:
  • 相关阅读:
    黄金点游戏(结对项目)
    WORD COUNT
    企业级应用与互联网应用的区别
    问题
    软件工程期末学习总结
    自我介绍
    四则运算程序
    个人自评
    contenttype
    ubuntusaltstack
  • 原文地址:https://www.cnblogs.com/wxmdevelop/p/5623004.html
Copyright © 2011-2022 走看看