在本节中,作者只写出了进度条的各种样式,包括圆形、条形,还有自定义的条形,我想如果能让条形进度条走满后再继续从零开始,于是我加入了一个条件语句。作者的代码中需要学习的是handler在主线程和子线程中的作用,还有子线程的建立。重置按钮暂时还没有使用,可能是线程与按钮之间的控制联系没有建立好。

MainActivity.java

  1. public class MainActivity extends Activity
  2. {
  3. 的数组
  4. private int[] data = new int[100];
  5. Button button1;
  6. int hasData = 0;
  7. // 记录ProgressBar的完成进度
  8. int status = 0;
  9. ProgressBar bar , bar2;
  10. // 创建一个负责更新的进度的Handler
  11. Handler mHandler = new Handler()
  12. {
  13. @Override
  14. public void handleMessage(Message msg)
  15. {
  16. // 表明消息是由该程序发送的
  17. if (msg.what == 0x111)
  18. {
  19. bar.setProgress(status);
  20. bar2.setProgress(status);
  21. }
  22. }
  23. };
  24. @Override
  25. public void onCreate(Bundle savedInstanceState)
  26. {
  27. super.onCreate(savedInstanceState);
  28. setContentView(R.layout.main);
  29. bar = (ProgressBar) findViewById(R.id.bar);
  30. bar2 = (ProgressBar) findViewById(R.id.bar2);
  31. button1 = (Button) findViewById(R.id.button1);
  32. // 启动线程来执行任务
  33. new Thread()
  34. {
  35. public void run()
  36. {
  37. while (status < 100)
  38. {
  39. // 获取耗时操作的完成百分比
  40. status = doWork();
  41. // 发送消息
  42. mHandler.sendEmptyMessage(0x111);
  43. }
  44. }
  45. }.start();
  46. }
  47. // 模拟一个耗时的操作
  48. public int doWork()
  49. {
  50. // 为数组元素赋值
  51. data[hasData++] = (int) (Math.random() * 100);
  52. try
  53. {
  54. Thread.sleep(100);
  55. }
  56. catch (InterruptedException e)
  57. {
  58. e.printStackTrace();
  59. }
  60. if (hasData == 100) {
  61. hasData=0;
  62. }
  63. return hasData;
  64. }
  65. }

XML文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent">
  6. <LinearLayout
  7. android:layout_marginTop="40dp"
  8. android:orientation="horizontal"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content">
  11. <!-- 定义一个大环形进度条 -->
  12. <ProgressBar
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. style="@android:style/Widget.ProgressBar.Large"/>
  16. <!-- 定义一个中等大小的环形进度条 -->
  17. <ProgressBar
  18. android:layout_width="wrap_content"
  19. android:layout_height="wrap_content"/>
  20. <!-- 定义一个小环形进度条 -->
  21. <ProgressBar
  22. android:layout_width="wrap_content"
  23. android:layout_height="wrap_content"
  24. style="@android:style/Widget.ProgressBar.Small"/>
  25. </LinearLayout>
  26. <TextView
  27. android:layout_width="match_parent"
  28. android:layout_height="wrap_content"
  29. android:text="任务完成的进度"/>
  30. <!-- 定义一个水平进度条 -->
  31. <ProgressBar
  32. android:id="@+id/bar"
  33. android:layout_width="match_parent"
  34. android:layout_height="wrap_content"
  35. android:max="100"
  36. style="@android:style/Widget.ProgressBar.Horizontal"/>
  37. <!-- 定义一个水平进度条,并改变轨道外观 -->
  38. <ProgressBar
  39. android:id="@+id/bar2"
  40. android:layout_width="match_parent"
  41. android:layout_height="wrap_content"
  42. android:max="100"
  43. android:progressDrawable="@drawable/my_bar"
  44. style="@android:style/Widget.ProgressBar.Horizontal"/>
  45.  
  46. <Button
  47. android:id="@+id/button1"
  48. android:layout_marginTop="30dp"
  49. android:layout_gravity="center_horizontal"
  50. android:text="重置"
  51. android:textSize="30dp"
  52. android:layout_width="wrap_content"
  53. android:layout_height="wrap_content"/>
  54. </LinearLayout>

Mybar.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <!-- 定义轨道的背景 -->
  4. <item android:id="@android:id/background"
  5. android:drawable="@drawable/no" />
  6. <!-- 定义轨道上已完成部分的样式 -->
  7. <item android:id="@android:id/progress"
  8. android:drawable="@drawable/ok" />
  9. </layer-list>

效果:

进度条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. WPF 进度条ProgressBar

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

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

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

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

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

  8. Android——进度条ProgressBar

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

  9. 对进度条progressbar的调整

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

随机推荐

  1. 前端-CSS-2-选择器

    基本选择器 首先来说一下,什么是选择器.在一个HTML页面中会有很多很多的元素,不同的元素可能会有不同的样式, 某些元素又需要设置相同的样式,选择器就是用来从HTML页面中查找特定元素的,找到元素之后 ...

  2. sql查询分析器中显示行号

    -- 工具-> -- 选项-> -- 文本编辑器-> -- 所有语言-> -- 常规-> -- 显示-> -- 行号

  3. scala -- 传名参数

    object Test{ def main(args: Array[String]): Unit = { def test(code : => Unit){// 传名参数 不计算函数值,而是把函 ...

  4. etcd ui

    https://github.com/henszey/etcd-browser docker build --build-arg http_proxy=http://109.105.4.17:3128 ...

  5. Android中注解的使用

    如果你是一名安卓开发者,你也一定听过大名鼎鼎的网络请求框架Retrofit.它将网络请求的方式以注解的形式展现,极大的提高了代码的可读性,同时网络请求集中写在一个interface中提高了代码的可维护 ...

  6. 每月IT摘录201808--201809

    一.技术 海量数据的解决方案: 使用缓存: 页面静态化技术: 数据库优化: 分离数据库中活跃的数据: 批量读取和延迟修改: 读写分离: 使用NoSQL和Hadoop等技术: 分布式部署数据库: 应用服 ...

  7. keras—多层感知器MLP—IMDb情感分析

    import urllib.request import os import tarfile from keras.datasets import imdb from keras.preprocess ...

  8. 虚拟机安装Centos6.5服务器系统

    前言: 工作需要,研究Linux数日,写下此教程,意在给其他初学者参考学习,亦是给自己留作备用.好记性不如烂笔头,毕竟只是偶尔使用,留下教程,以备不时之需. 对于学习研究Linux的新手,个人推荐VM ...

  9. 33. Search in Rotated Sorted Array旋转数组二分法查询

    一句话思路:反正只是寻找一个最小区间,断开也能二分.根据m第一次的落点,来分情况讨论. 一刷报错: 结构上有根本性错误:应该是while里面包括if,不然会把代码重复写两遍,不好. //situati ...

  10. php 利用http上传协议(表单提交上传图片 )

    主要就是利用php 的 fsocketopen 消息传输. 这里先通过upload.html 文件提交,利用chrome抓包,可以看到几个关键的信息. 首先指定了表单类型为multipart/form ...