• 代码添加ProgressBar 进度条


     

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

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

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

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

     

    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)

     

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



     

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

     

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



     

    OK,运行工程 效果如图

     

  • 相关阅读:
    每天学习算法二
    每天学习算法 一
    数据量基础
    SQL server数据库创建代码,filegroup文件组修改,
    SQL学习笔记之 数据库基础(一)
    Oracle的查询-条件表达式
    Oracle的查询-单行查询
    Oracle 的查询-scott用户介绍
    Oracle的基本操作-序列的使用
    Oracle的基本操作-修改表结构、数据的增删改查
  • 原文地址:https://www.cnblogs.com/firecode/p/2669167.html
Copyright © 2020-2023  润新知