• ProgressBar与Handler的整合应用


     在android中进度条使用ProgressBar表示,用于向用户显示某个耗时操作完成的百分比     之ProgressBar与Handler的整合应用

    1.在xml文件中通过<ProgressBar>标记添加,表示基本如下:

    1 <ProgressBar        
    2 android:id="@+id/progressBar1"        
    style
    ="?android:attr/progressBarStyleHorizontal"
    android:layout_width
    ="fill_parent"
    android:layout_height
    ="wrap_content" />

    部分xml属性如下:

    android:max-->设置进度条的最大值
    android:progress-->指定进度条已经完成的进度值
    android:progressDrawable-->设置进度条轨道的绘制形式

    关于progressBar的style

    style="?android:attr/progressBarStyleHorizontal"    细长水平进度条
    style="?android:attr/progressBarStyleLarge"         大原型水平进度条

     setIndeterminate  设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值

    代码如下

    activity_main.xml
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    
    tools:context=".MainActivity" >    
    <TextView       
     android:id="@+id/tv1"        
    android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    
    <ProgressBar       
     android:id="@+id/pb"        
    android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/tv1"        
    android:visibility="gone" />    
    <Button        
    android:id="@+id/btn"       
     android:layout_width="wrap_content"        android:layout_height="wrap_content"        
    android:text="点击"       
     android:layout_below="@id/pb" />
    </RelativeLayout>
    MainActivity.java
    public class MainActivity extends Activity {    
    private TextView tv1;    private ProgressBar pb;    
    private Button btn;    
    private int count;
    @Override    
    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                
    tv1 = (TextView) findViewById(R.id.tv1);        
    pb = (ProgressBar) findViewById(R.id.pb);        
    btn = (Button) findViewById(R.id.btn);        
    //调用setIndeterminate设置indeterminate为false 滚动条告知自己正在忙碌,若为true,则可以根据进度设置进度值        pb.setIndeterminate(false);                btn.setOnClickListener(new View.OnClickListener() {                        
    @Override            
    public void onClick(View v) {                
    //点击按钮,ProgressBar显示                pb.setVisibility(View.VISIBLE);                
    //指定ProgressBar最大值为100                pb.setMax(100);                
    //指定初始值为0                pb.setProgress(0);                                
    //开启线程,更改ProgressBar的值                
    new Thread (new Runnable() {                                                                                
    @Override public void run() { for (int i = 0; i
    < 10; i++) { try { count = (i + 1)*20;
    Thread.sleep(1000); //线程运行5秒后结束 if (i
    == 4) {
    Message msg
    = new Message();
    msg.what
    = 0;
    handle.sendMessage(msg);
    break;
    }else{ Message msg
    = new Message();
    msg.what
    = 1;

    handle.sendMessage(msg);
    } } catch (Exception e) {
    } } } }).start(); } }); } Handler handle
    = new Handler(){ public void handleMessage(Message msg) { switch (msg.what) { case 0: tv1.setText("数据加载完毕"); //设置ProgressBar隐藏
    pb.setVisibility(View.GONE); //线程中断

    Thread.currentThread().interrupt();
    break; case 1: if (!Thread.currentThread().interrupted()) {
    pb.setProgress(count); //将进度显示在setText中
    tv1.setText("
    ==================");

    } break; default: break; } }; };

     下载:https://github.com/SamSarah1/AndroidDemo

    抓住当下,不浮流年!无知本无罪,罪在明知不足,而不肯去学习!!!
  • 相关阅读:
    c++实验9 图及图的操作实验
    Html/CSS 示例演练 图书馆后台界面
    c++实验8 哈夫曼编码-译码器
    Html/CSS 初步介绍html和css部分重要标签
    c++实验7 二叉树
    JavaWeb -学生信息管理实践(JDBC+web+三层架构+DBUtil构造思路)
    java 实验6 图形用户界面设计试验(2)
    操作表与操作表数据行
    数据表操作练习
    数据库的介绍:
  • 原文地址:https://www.cnblogs.com/SamSarah/p/4888853.html
Copyright © 2020-2023  润新知