当一个应用在后台执行时,前台界面不会有任何信息,这是用户根本不知道程序是否在执行以及执行进度等,因此需要使用进度条来提示程序执行的进度。在Android中,进度条(ProgressBar)用于向用户显示某个耗时操作完成的百分比。

在屏幕中添加进度天,可以在XML布局文件中通过<ProgressBar>标记添加,基本语法格式如下:
<ProgressBar
属性列表
>
</ProgressBar>

ProgressBar组件支持的XML属性如下所示:
android:max 用于设置进度条的最大值
android:progress 用于指定进度条已完成的进度值
android:progressDrawable 用于设置进度条轨道的绘制形式

除了上表介绍的属性外,进度条还提供了下面两个常用的方法用于操作进度:
setProgress(int progress)方法,用于设置进度完成的百分比
incrementProgressBy(int diff)方法:用于设置进度条的进度增加或减少。当参数为正数时,表示进度增加;为负数时,表示进度减少。

Progress的style属性的可选值:
?android:attr/progressBarStyleHorizontal 细水平长条进度条
?android:attr/progressBarStyleLarge 大圆形进度条
?android:attr/progressBarStyleSmall 小圆形进度条
@android:style/Widget.ProgressBar.Large 大跳跃、旋转画面的进度条
@android:style/Widget.ProgressBar.Small 小跳跃、旋转画面的进度条
@android:style/Widget.ProgressBar.Horizontal 粗水平长条进度条

接下来一个小实例来实现水平进度条和圆形进度条:

实现效果如图:


实现方法:
res/layout/main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal"android:background="#000000"><ProgressBar android:id="@+id/progressBar1"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:max="100"    style="@android:style/Widget.ProgressBar.Horizontal"/><ProgressBar android:id="[email protected]/progressBar2"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    style="?android:attr/progressBarStyleLarge"/></LinearLayout>


MainActivity:
package com.example.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.ProgressBar;import android.widget.Toast;public class MainActivity extends Activity {private ProgressBar horizonP;//水平进度条private ProgressBar circleP;//圆形进度条private int mProgressStatus=0;//完成进度private Handler mHandler;//声明一个用于处理消息的Handler类的对象@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);horizonP=(ProgressBar)findViewById(R.id.progressBar1);//获取水平进度条circleP=(ProgressBar)findViewById(R.id.progressBar2);//获取圆形进度条/*通过匿名内部类实例化处理消息的Handler类的对象,并重写其handleMessage()方法, * 实现当耗时操作没有完成时更新进度,否则设置进度条不显示*/mHandler=new Handler(){@Overridepublic void handleMessage(Message msg) {if(msg.what==0x111){horizonP.setProgress(mProgressStatus);//更新进度}else{Toast.makeText(MainActivity.this, "耗时操作已经完成", Toast.LENGTH_SHORT).show();horizonP.setVisibility(View.GONE);//设置进度条不显示并且不占用空间circleP.setVisibility(View.GONE);}super.handleMessage(msg);}};//开启一个线程,用于模拟一个耗时操作。在该线程中,调用sendMessage()发送处理消息new Thread(new Runnable(){@Overridepublic void run() {while(true){mProgressStatus=doWork();//获取耗时操作完成的百分比Message m=new Message();if(mProgressStatus<100){m.what=0x111;mHandler.sendMessage(m);//发送消息}else{m.what=0x110;mHandler.sendMessage(m);//发送消息break;}}}//模拟一个耗时操作private int doWork() {mProgressStatus+=Math.random()*10;//改变完成进度try{Thread.sleep(200);//线程休眠200毫秒}catch(InterruptedException e){e.printStackTrace();}return mProgressStatus;//返回新的进度}}).start();//开启一个线程}}
转载请注明出处:http://blog.csdn.net/acmman/article/details/44886795

更多相关文章

  1. 适用于各种连锁企业15寸多点触摸android收款机消费机pos机
  2. android中借助高德地图sdk实现基本的定位
  3. Android(安卓)AndroidProgressLayout:加载页面遮挡耗时操作任务页
  4. Android学习系列(3)--App自动更新之自定义进度视图和内部存储
  5. Android多线程的实现方式及使用场景
  6. Android开发指南-用户界面-对话框
  7. Android(安卓)自定义View(二)实现环形进度条
  8. 【Android】Handler使用入门
  9. Android示例 JobService分析

随机推荐

  1. android 2.2+ 完全退出程序的方法
  2. Android(安卓)横屏时禁止输入法全屏
  3. android调用系统打电话功能
  4. Android实现画虚线的控件
  5. android CTS SELinuxDomainTest# testIni
  6. android wegit 组件
  7. androidのview游戏框架
  8. 判断android devices是否联网
  9. Android学习之ListView使用基础
  10. 【Android】进程与线程基本知识