天天看點

Android控件之ProgressBar探究

 progressbar位于android.widget包下,其繼承于view,主要用于顯示一些操作的進度。應用程式可以修改其長度表示目前背景操作的完成情況。因為進度條會移動,是以長時間加載某些資源或者執行某些耗時的操作時,不會使使用者界面失去響應。progressbar類的使用非常簡單,隻需将其顯示到前台,然後啟動一個背景線程定時更改表示進度的數值即可。

以下progressbar跟handle結合,模拟進度條的使用,當進度條完成時會跳轉到testactivity

main.xml布局檔案

<?xml version="1.0" encoding="utf-8"?>

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<!-- 長方形進度條,一開始不可見,直到點選按鈕時才出現進度條 -->

<progressbar android:id="@+id/progressbar"

style="?android:attr/progressbarstylehorizontal"

mce_style="?android:attr/progressbarstylehorizontal"

android:layout_height="wrap_content"

android:visibility="gone"

android:max="100" />

<!-- 圓形進度條 -->

<!--<progressbar android:id="@+id/progressbar"

style="?android:attr/progressbarstylelarge"

mce_style="?android:attr/progressbarstylelarge"

android:layout_width="wrap_content"

android:layout_height="wrap_content" />-->

<button android:id="@+id/start"

android:text="啟動進度條"

android:layout_height="wrap_content" />

<button android:id="@+id/stop"

android:text="停止進度條"

</linearlayout>

pbactivity類

package com.ljq.pb;

import android.app.activity;

import android.content.intent;

import android.os.bundle;

import android.os.handler;

import android.view.view;

import android.widget.button;

import android.widget.progressbar;

public class pbactivity extends activity {

private progressbar progressbar = null;

private button start = null, stop = null;

// 定義handler對象

private handler handler = new handler();

@override

public void oncreate(bundle savedinstancestate) {

super.oncreate(savedinstancestate);

setcontentview(r.layout.main);

progressbar = (progressbar) findviewbyid(r.id.progressbar);

progressbar.setprogress(0);

start = (button) findviewbyid(r.id.start);

start.setonclicklistener(new view.onclicklistener() {

public void onclick(view v) {

handler.post(runnable); //開始執行

}

});

stop=(button)findviewbyid(r.id.stop);

stop.setonclicklistener(new view.onclicklistener() {

handler.removecallbacks(runnable);//停止執行

int pro=0;

runnable runnable=new runnable(){

public void run() {

progressbar.setvisibility(view.visible);

pro=progressbar.getprogress()+10;

progressbar.setprogress(pro);

//如果進度小于100,,則延遲1000毫秒後重複執行runnable

if(pro<100){

handler.postdelayed(runnable, 1000);

}else{

progressbar.setvisibility(view.gone);

startactivity(new intent(pbactivity.this, testactivity.class));

handler.removecallbacks(runnable);

};

運作結果

Android控件之ProgressBar探究

繼續閱讀