进度条(Progressbar)

提供如下一些样式改变进度条的外观

@android:style/Widget.ProgressBar.Horizontal(水平进度条)

@android:style/Widget.ProgressBar.Inverse(普通大小的环形进度条)

@android:style/Widget.ProgressBar.Large(大环形进度条)

@android:style/Widget.ProgressBar.Large.Inverse(大环形进度条)

@android:style/Widget.ProgressBar.Small(小环形进度条)

@android:style/Widget.ProgressBar.Small.Inverse(小环形进度条)

常用属性:

max:设置该进度条的最大值

progress:设置该进度条已完成的进度值

progressDrawable:设置该进度条的轨道对应的Drawable对象(是一个xml文件)

下面我们直接看代码:

1.Activity

//进度条
public class ProgressBarActivity extends Activity { private ProgressBar progressBarDefaultStyle1;
private ProgressBar progressBarDefaultStyle2;
private Button button; private Handler handler = new Handler(){
public void handleMessage(Message msg) {
int flag = msg.arg1;
if(flag <= 100){
progressBarDefaultStyle1.setProgress(flag);
}
if (flag <= 200) {
progressBarDefaultStyle2.setProgress(flag/2); }
if (flag==201){
progressBarDefaultStyle1.setProgress(0);
progressBarDefaultStyle2.setProgress(0);
button.setEnabled(true);
timerTask.cancel();
}
}
};
private Timer timer = new Timer();
private SendMsgTimerTask timerTask = new SendMsgTimerTask(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.progress_bar); progressBarDefaultStyle1 = (ProgressBar)findViewById(R.id.progressBarDefaultStyle1Id);
progressBarDefaultStyle2 = (ProgressBar)findViewById(R.id.progressBarDefaultStyle2Id);
button = (Button) findViewById(R.id.buttonId); button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
button.setEnabled(false);
timer.schedule(timerTask, 5, 100);
}
}); } class SendMsgTimerTask extends TimerTask{
int flag = 0;
public void run() {
Message msg = new Message();
msg.arg1 = ++flag;
handler.sendMessage(msg);
Log.i("msg.arg1", "发消息:"+msg.arg1);
}
} @Override
protected void onDestroy() {
super.onDestroy();
timer.cancel();
} }

2.xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="5dp" > <!-- 定义一个普通大小的环形进度条 --> <ProgressBar
android:id="@+id/progressBarInverseStyleId"
style="@android:style/Widget.ProgressBar.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <!-- 定义一个大环形进度条 --> <ProgressBar
android:id="@+id/progressBarLargeStyleId"
style="@android:style/Widget.ProgressBar.Large"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarInverseStyleId" /> <!-- 定义一个大环形进度条 --> <ProgressBar
android:id="@+id/progressBarLargeInverseStyleId"
style="@android:style/Widget.ProgressBar.Large.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarLargeStyleId" /> <!-- 定义一个小环形进度条 --> <ProgressBar
android:id="@+id/progressBarSmallStyleId"
style="@android:style/Widget.ProgressBar.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarLargeInverseStyleId" /> <!-- 定义一个小环形进度条 -->
<ProgressBar
android:id="@+id/progressBarSmallInverseStyleId"
style="@android:style/Widget.ProgressBar.Small.Inverse"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarSmallStyleId" /> <!-- 定义一个默认样式的水平进度条 -->
<ProgressBar
android:id="@+id/progressBarDefaultStyle1Id"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarSmallInverseStyleId"
android:max="100" /> <!-- 定义一个指定样式的水平进度条 -->
<!-- bar_state是一个图片状态文件 -->
<ProgressBar
android:id="@+id/progressBarDefaultStyle2Id"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarDefaultStyle1Id"
android:max="100"
android:progressDrawable="@drawable/bar_state" /> <Button
android:id="@+id/buttonId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/progressBarDefaultStyle2Id"
android:text="模拟耗时操作" /> </RelativeLayout>

3.进度条的布局文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 定义轨道的背景 -->
<item android:id="@android:id/background" android:drawable="@drawable/no"/>
<!-- 定义轨道的成功图像 -->
<item android:id="@android:id/progress" android:drawable="@drawable/yes"/>
</layer-list>

4.效果显示图

进度条(Progressbar)的更多相关文章

  1. Android 自学之进度条ProgressBar

    进度条(ProgressBar)也是UI界面中的一种非常使用的组件,通常用于向用户显示某个耗时完成的百分比.因此进度条可以动态的显示进度,因此避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应, ...

  2. WPF的进度条progressbar,运行时间elapse time和等待spinner的实现

    今天用.NET 4.5中的TPL的特性做了个小例子,实现了WPF的进度条progressbar,运行时间elapse time和等待spinner. 先上图吧.   这个例子包含4个实现,分别是同步版 ...

  3. android圆形进度条ProgressBar颜色设置

    花样android Progressbar http://www.eoeandroid.com/thread-1081-1-1.html http://www.cnblogs.com/xirihanl ...

  4. Android-SpinKit 进度条 (ProgressBar)

    项目地址: https://github.com/ybq/Android-SpinKit 类别: 进度条 (ProgressBar) 打分: ★★★★★ 更新: 2016-03-28 11:17 大小 ...

  5. 进度条ProgressBar

    在本节中,作者只写出了进度条的各种样式,包括圆形.条形,还有自定义的条形,我想如果能让条形进度条走满后再继续从零开始,于是我加入了一个条件语句.作者的代码中需要学习的是handler在主线程和子线程中 ...

  6. WPF 进度条ProgressBar

    今天研究了一下wpf的进度条ProgressBar 1.传统ProgressBar WPF进度条ProgressBar 这个控件,如果直接写到循环里,会死掉,界面会卡死,不会有进度.需要把进度条放到单 ...

  7. Xamarin XAML语言教程构建进度条ProgressBar

    Xamarin XAML语言教程构建进度条ProgressBar Xamarin XAML语言教程构建进度条ProgressBar,ProgressBar被称为进度条,它类似于没有滑块的滑块控件.进度 ...

  8. Android零基础入门第51节:进度条ProgressBar

    原文:Android零基础入门第51节:进度条ProgressBar 不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有AP ...

  9. Android——进度条ProgressBar

    1.activity_progressbar.xml <?xml version="1.0" encoding="utf-8"?><Linea ...

  10. 对进度条progressbar的调整

    进度条的理解,感觉这个进度条不是那么简单,系统给我们定制了几个普通的,但是如果还需要有更加好的效果,需要自己去调试. <ProgressBar android:layout_width=&quo ...

随机推荐

  1. 【hdu4609】 3-idiots FFT

    题外话:好久没写blog了啊-- 题目传送门 题目大意:给你m条长度为ai的线段,求在其中任选三条出来,能构成三角形的概率.即求在这n条线段中找出三条线段所能拼出的三角形数量除以$\binom{m}{ ...

  2. Window Location对象

    window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面. window.location 对象在编写时可不使用 window 这个前缀. Location ...

  3. 移动端h5直播项目|html5直播实战开发|h5仿陌陌

    最近一些直播.小视频什么的都比较火,像陌陌.抖音.火山短视频… 于是空闲时间自己也利用html5技术也试着倒腾了下直播项目,使用到了h5+css3+iscroll+zepot+swiper+wlsPo ...

  4. 12、xamarin form中实现H5 网页唤醒微信支付的方法

    在微信的支付中有种支付叫微信H5支付.方便用户在网页中轻松唤起微信进行支付. 当然微信不推荐大家使用这样的方式唤起微信支付.建议app还是使用正常的微信支付sdk即可 服务端与其他的建议参考微信支付官 ...

  5. python的字符串连接操作符+

    如图, 运行后提示错误,这是“+” 是字符串连接操作符,字符串连接只能在被连接的每一个都是字符串时起作用.而以上程序试图将一个字符串同一个非字符串连接会引发一个异常,所以会报错. 正确的为: 或者是:

  6. 软件魔方制作系统启动盘并安装win8系统

    不多说,直接上干货! 推荐软件:软件魔方 http://mofang.ruanmei.com/ 这里,我想说的是,这个软件来制作系统盘,是真的方便和好处多多.具体我不多说,本人也是用过其他的如大白菜等 ...

  7. iphoneX 适配

    1.iphoneX的尺寸  375*812   上边有44px的危险区,下边有34px的危险区,剩下的是安全区. 2.viewport设值cover <meta name="viewp ...

  8. 前端通信:ajax设计方案(三)--- 集成ajax上传技术

    在此之前让我感慨一下现在的前端开发的氛围.我遇到好多人,给我的观念都是,这个东西这个框架有了,那个东西那个框架做了,前端嘛,学几个框架,这个拼凑一下那个拼凑一下就好了.其实我想问,东西都框架做了,那你 ...

  9. Linux-(ps,grep)

    grep命令 1.命令格式: grep [option] pattern file 2.命令功能: 用于过滤/搜索的特定字符.可使用正则表达式能多种命令配合使用,使用上十分灵活. Linux系统中gr ...

  10. sublime text3怎么让左侧显示目录树

    在前端开发中(包括Node.js开发),经常会使用sublime text,但之前一直不知道别人是怎么让左侧显示目录树,故特意在此记录一下. View ->Side Bar ->Show ...