zoukankan      html  css  js  c++  java
  • 进度条ProgressBar

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

    MainActivity.java

    1. public class MainActivity extends Activity
    2. {
    3. // 该程序模拟填充长度为100的数组
    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>

    效果:

  • 相关阅读:
    Android_1_渐变背景色
    js 数组常用方法说明
    js模拟键盘按键事件
    SqlServer中截取字符串
    SqlServer将日期格式DateTime转换成varchar类型
    如何经营好(开好)一家淘宝店铺
    如何才能学好javascript
    前端常用的正则表达式
    淘宝中的一些基本CSS代码
    CSS样式中伪类和伪类元素的区别(css中一个冒号和两个冒号的区别)
  • 原文地址:https://www.cnblogs.com/wwjldm/p/6929610.html
Copyright © 2011-2022 走看看