大家好 今天为大家分享代码中添加ProgressBar的例子 。当我们需要初始化程序或者联网获取数据 在数据库中查找数据时,这些需要耗费些时间的操作就需要进度条来提示用户有任务在进行,以免造成程序界面假死。 为什么要在代码中添加而不在布局里面添加呢,因为在代码里添加可以重复多次利用,免得没用到时就得在布局里添加,麻烦。

好了,下面我们来做个简单的Demo熟悉一下,

第一步:首先创建工程ProgressBarInsertLayoutinCode。

第二步:创建XMl 布局文件  我们就用自动创建的main.xml (在这里面只添加了一个Button)用来启动ProgressBar,代码如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/relative"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <Button android:id="@+id/button"
  8. android:text="Click me"
  9. android:layout_width="fill_parent"
  10. android:layout_height="wrap_content"/>
  11. </RelativeLayout>

第三步:修改ProgressBarInsertLayoutinCodeActivity代码,如下:(这里我们用到了Handler和Thread,用来更新ProgressBar的进度,这样就可以到一定是消除ProgressBar)

[html] view plaincopy
  1. package cn.li.progressbardemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.widget.Button;
  6. public class ProgressBarInsertLayoutinCodeActivity extends Activity {
  7. /** Called when the activity is first created. */
  8. private Button btn;
  9. private InsertProgressBar bar;
  10. @Override
  11. public void onCreate(Bundle savedInstanceState) {
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. bar = new InsertProgressBar(ProgressBarInsertLayoutinCodeActivity.this);
  15. btn = (Button)findViewById(R.id.button);
  16. btn.setOnClickListener(new View.OnClickListener() {
  17. @Override
  18. public void onClick(View v) {
  19. // TODO Auto-generated method stub
  20. bar.insertBar();
  21. }
  22. });
  23. }
  24. }

第四步:创建InsertProgressBar.java 此类创建了ProgressBar

[html] view plaincopy
  1. package cn.li.progressbardemo;
  2. import android.content.Context;
  3. import android.os.Handler;
  4. import android.os.Message;
  5. import android.view.View;
  6. import android.widget.ProgressBar;
  7. import android.widget.RelativeLayout;
  8. import android.widget.RelativeLayout.LayoutParams;
  9. public class InsertProgressBar {
  10. private RelativeLayout relative ;
  11. private ProgressBar bar;
  12. private ProgressBarInsertLayoutinCodeActivity context;
  13. private int rate = 0;
  14. protected static final int STOP = 0;
  15. protected static final int NEXT = 1;
  16. public InsertProgressBar(Context c) {
  17. super();
  18. context = (ProgressBarInsertLayoutinCodeActivity) c;
  19. relative = (RelativeLayout)context.findViewById(R.id.relative);
  20. bar = new ProgressBar(context);
  21. //设置ProgressBar的高宽和显示位置
  22. RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
  23. params.getRules()[RelativeLayout.CENTER_IN_PARENT] = RelativeLayout.TRUE;
  24. bar.setLayoutParams(params);
  25. }
  26. public void insertBar() {
  27. bar.setProgress(0);
  28. //当ProgressBar正在运行时就不再创建ProgressBar
  29. if(!bar.isShown()){
  30. bar.setVisibility(View.VISIBLE);
  31. relative.addView(bar);
  32. new MyThread().start();
  33. }
  34. }
  35. class MyThread extends Thread{
  36. @Override
  37. public void run() {
  38. super.run();
  39. try {
  40. for(int i=0;i<25;i++){
  41. rate = (i+1)*4;
  42. if(i!=24){
  43. Message msg = new Message();
  44. msg.what = NEXT;
  45. myhandler.sendMessage(msg);
  46. }else{
  47. Message msg = new Message();
  48. msg.what = STOP;
  49. myhandler.sendMessage(msg);
  50. }
  51. MyThread.sleep(200);
  52. }
  53. } catch (Exception e) {
  54. }
  55. }
  56. }
  57. //创建一个Handle 接收消息
  58. private Handler myhandler = new Handler(){
  59. @Override
  60. public void handleMessage(Message msg) {
  61. super.handleMessage(msg);
  62. switch (msg.what) {
  63. case STOP:
  64. bar.setVisibility(View.GONE);
  65. relative.removeView(bar);
  66. Thread.currentThread().interrupt();
  67. break;
  68. case NEXT:
  69. bar.setProgress(rate);
  70. break;
  71. }
  72. }
  73. };
  74. }

OK,运行工程 效果如图

代码添加ProgressBar 进度条相关推荐

  1. VBA代码为ppt添加页码进度条

    VBA代码为ppt添加页码进度条 fandroid 于 2015-05-25 15:31:28 发布 4617  已收藏 5 分类专栏: office 文章标签: vba ppt 版权 office ...

  2. android 自定义 进度条 旋转,Android_Android ProgressBar进度条使用详解,ProgressBar进度条,分为旋转进 - phpStudy...

    Android ProgressBar进度条使用详解 ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,之前一直不明白进度条如何在实际项目中使用,网上演示进度条的案 ...

  3. android ProgressBar 进度条demo

    ProgressBar Demo 进度条没有什么好讲解的,就是几个方法,熟悉了就ok.直接上代码. activity_main.xml <?xml version="1.0" ...

  4. Acitivity(页面)之间的跳转,ProgressBar 进度条,PopupWindow 弹出框,Dialog 对话框,Spinner下拉框

    Acitivity(页面)之间的跳转 Acitivity(页面)之间的跳转需要使用到 Intent(意图) Intent intent = new Intent(MainActivity.this(从 ...

  5. android基础 [超级详细android常用控件解析(ScollView控件,ProgressBar进度条,PopupWindow控件)]

    目录 1 章节目录 2 ScollView控件 2.1 ScrollView简介 2.2 ScrollView使用 2.3 常用属性及方法 3 ProgressBar进度条 3.1 简介 3.2 常用 ...

  6. ProgressBar(进度条)-常用属性讲解与基础实例

    本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条:或者 ...

  7. Python使用tkinter库制作带有Laber标签、Entry文本框、Progressbar进度条、text日志框等元素的GUI操作界面

    本文通过实例介绍Python的tkinter库的title.iconbitmap.geometry.attributes.grid等类的功能,并制作带有Laber标签.Entry文本框.Progres ...

  8. c#进度条刻度_c# ProgressBar进度条方向和美观

    protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style | ...

  9. [Android]ProgressBar进度条

    ProgressBar ProgressBar是进度条控件,ProgressBar的应用场景很多,比如用户登录时,后台发送请求,以及进行等待服务器返回信息等一些比较耗时的操作.这个时候如果没有提示,用 ...

最新文章

  1. Tengine AIFramework框架
  2. 5G URLLC — Overview
  3. C语言日志级别和作用,自己写的C语言通用日志框架,可以控制日志输出等级
  4. 人工智能学习--知识图谱的关键技术及其智能应用
  5. ArrayList和Vector的异同
  6. 自动采集壁纸的微信小程序
  7. python实现电脑程序自动化_python基于pywinauto实现PC客户端自动化
  8. 整理: JAVA错误处理集锦
  9. 重写DEV的DateEdit控件的类只选择年月
  10. ubuntu系统配置双网卡方法
  11. Jmeter测试——java测试脚本编写
  12. ajax实现直播功能,jquery实现直播弹幕效果
  13. 2021 区块链行业融资:资本涌入,触发区块链应用的无限可能| 2021 区块链年报|Footprint Analytics
  14. C# 关于dgv中DataGridViewComboBoxCell触发事件
  15. 整理了MariaDB和MySQL数据库历年发布版本和对应关系,方便记忆命令。
  16. jmeter 接口测试 签名_Jmeter之API接口签名验证测试
  17. Excel技巧—Excel也能P图抠图
  18. 第三节:带你详解Java的操作符,控制流程以及数组
  19. 数海信息集团CEO刘志欣2022年新年致辞:踔厉奋发 数智领航
  20. 计算机应用能力问题分析,浅析高职院校计算机应用基础教学的思考

热门文章

  1. vue学习笔记(1)-组件通信
  2. case --when
  3. 运营商何时推出无限流量?
  4. reverseajax(comet) socket 杂记
  5. FastClick使用之trigger触发click失效
  6. linux系列服务总结之四:SAMBA共享设置完整介绍
  7. 个人理财助手2009 V2.4
  8. 数据库经典文章!(必备)
  9. 飞机票应该如何选择更安全
  10. flink的print()函数输出的都是对象地址而非对象内容