zoukankan      html  css  js  c++  java
  • 安卓高级组件-----进度条

            进度条组件是安卓重要组件之一。当后台某个程序执行时,前台进度条动态显示了程序执行进度的百分比。是耗时较长的程序让用户觉得在自己的掌控之中,提高程序的友好型。

            安卓支支持几种风格的进度条,能通过style属性呢设置进度条风格,该属性如下:

            @android:style/Widget.ProgressBar.Horizontal    水平进度条

            @android:style/Widget.ProgressBar.Inverse        普通环形进度条

            @android:style/Widget.ProgressBar.Large           大环形进度条

            @android:style/Widget.ProgressBar.Large.Inverse   大环形进度条

            @android:style/Widget.ProgressBar.Small            小环形进度条

            @android:style/Widget.ProgressBar.Small.Inverse   小环形进度条

            同时,进度条在xml文件中还要如下属性:

            android:max          设置进度条最大值

            android:rpogress    指定进度条已经完成的进度值

            android:ProgressDrawable     指定进度条轨道的绘制形式

    进度条组件有两个最常用的方法:setProgress()设置进度条已经完成的进度;incrementProgressBy()设置进度条进度增加或减少;参数是正数时增加,负数减少;

    实例操作:下面我们实现视屏进度条和环形进度条

    1.新建工程,在布局中添加两个进度条,一个为环形一个水平进度条

                <ProgressBar
                android:id="@+id/progressBar1"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_gravity="center_horizontal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:max="100"
                android:layout_weight="1" />
    
            <ProgressBar
                android:id="@+id/progressBar2"
                style="?android:attr/progressBarStyleSmall"
                android:layout_gravity="center_horizontal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1" />

    2.主活动中获取进度条,定义一个进度变量和消息处理Handler类对象

            hp = (ProgressBar)findViewById(R.id.progressBar1);
            cp = (ProgressBar)findViewById(R.id.progressBar2);
            h = new Handler(){
    
                @Override
                public void handleMessage(Message msg) {
                    if(msg.what == 0x11){
                        hp.setProgress(progress);
                    }else {
                        Toast.makeText(MainActivity.this, "耗时完成", Toast.LENGTH_SHORT).show();        }
                        hp.setVisibility(View.GONE);
                        cp.setVisibility(View.GONE);                    
                }            
            };

    3.通过匿名内部类实例化消息处理Handler类对象,重写handlerMessage()方法。耗时没有完成时更新进度,耗时完成之后出现提示

        h = new Handler(){
    
            public void handleMessage(Message msg) {
                if(msg.what == 0x11){
                    hp.setProgress(progress);
                }else {
                    Toast.makeText(MainActivity.this, "耗时完成", Toast.LENGTH_SHORT).show();        }
                    hp.setVisibility(View.GONE);
                    cp.setVisibility(View.GONE);                    
            }            
        }

    4.开启线程耗时,sendMessage()发送处理消息

            new Thread(new Runnable() {
                
                @Override
                public void run() {
                    while(true){
                        progress = doWork();
                        Message m = new Message();
                        if(progress <= 100){
                            m.what = 0x11;
                            h.sendMessage(m);
                        }else {
                            m.what = 0x10;
                            h.sendMessage(m);
                            break;
                        }
                    }
                    
                }
                
                private int doWork(){
                    progress += Math.random()*10;
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    return progress;
                }
            }).start();

    运行代码,可以看到环形进度条和水平进度条更新。

  • 相关阅读:
    XOR加密作业
    2019-2020-1 20191312《信息安全专业导论》第六周学习总结
    欧几里得算法及其伪代码
    2019-2020-1 20191312《信息安全专业导论》第五周学习总结
    2019-2020-1 20191312《信息安全专业导论》第四周学习总结
    寻找你的黑客偶像作业
    2019-2020-1 20191312 《信息安全专业导论》第三周学习总结
    罗马数字转化为阿拉伯数字
    IEEE754 浮点数
    2019-2020-2 网络对抗技术 20175211 Exp6 MFS基础应用
  • 原文地址:https://www.cnblogs.com/divingpig/p/6480717.html
Copyright © 2011-2022 走看看