安卓進階組件-----進度條,安卓-----進度條

來源:互聯網
上載者:User

安卓進階組件-----進度條,安卓-----進度條

        進度條組件是安卓重要組件之一。當後台某個程式執行時,前台進度條動態顯示了程式執行進度的百分比。是耗時較長的程式讓使用者覺得在自己的掌控之中,提高程式的友好型。

        安卓支支援幾種風格的進度條,能通過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();

運行代碼,可以看到環形進度條和水平進度條更新。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.