標籤:android ui 組件 進階 學習
Android UI組件進階(1)——帶進度條的按鈕
本節引言:
這個系列是繼Android UI組件執行個體大全後的進階系列,在該系列中我們將進一步的學習
Android UI組件,建議閱讀本系列前線學習下UI組件執行個體大全系列,掌握基本組件的使用;
當然你也可以直接學習本系列!好了,廢話不多說,直接開始第一節吧!本節要示範的是:
帶進度條的按鈕!相信大家在360手機小幫手到看到這個東東吧:
本節要實現的就是下方這個點擊後顯示進度的按鈕
:
必備基礎:
1.進度條的一些屬性:
background:設定背景圖片
max:設定進度條的最大值
progress:設定進度條的值
style="?android:attr/progressBarStyleHorizontal" :定義進度條為水平方向的風格
progressDrawable:當我們不想使用系統預設的Progress時可以自己定義一個,這個資源檔就是
用來調用我們自己定義的Progress表徵圖的一般是在drawable下建立一個.xml件使用layer-list來組
織這些表徵圖.
2.Handler的相關方法:
對UI的操作要麼在主線程中進行,要麼在handler中進行,切忌別在新線程中直接操作UI組件,會報異常的!
handleMessage(msg):使用Handle需要重寫的主要方法,使用msg.what判斷標識碼,執行對應操作
sendEmptyMessage(0x123):發送一個空資訊給handle,標識碼為0x123
sendEmptyMessageDelayed(0x321,500);發送一個空資訊給handler,標識碼為0x321,延遲500毫秒後發送
工程解析:
相關代碼:
MainActivity.java
package com.jay.uidemo.progressbuttondemo;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.ProgressBar;import android.widget.TextView;public class MainActivity extends Activity {int i=0;ProgressBar progressBar=null;Button downLoadBtn=null;Handler handler=new Handler(){public void handleMessage(Message msg) {switch (msg.what) {case 0x123:downLoadBtn.setClickable(false);i+=20;progressBar.setProgress(i);if(i!=100){handler.sendEmptyMessageDelayed(0x123,500);downLoadBtn.setText(i+"%");}else if(i==100){downLoadBtn.setText("下載完成");handler.sendEmptyMessageDelayed(0x321,500);}break;case 0x321:downLoadBtn.setText("開啟");downLoadBtn.setClickable(true);downLoadBtn.setBackgroundResource(R.drawable.aa_button_after);handler.sendEmptyMessageDelayed(0x110,1000);break;case 0x110:progressBar.setProgress(0);downLoadBtn.setBackgroundResource(R.drawable.btn_selector);downLoadBtn.setText("下載");default:break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); TextView tx = (TextView) findViewById(R.id.texttitle); progressBar=(ProgressBar) findViewById(R.id.progressBar); downLoadBtn=(Button) findViewById(R.id.downLoadBtn); downLoadBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) { i= 0;handler.sendEmptyMessage(0x123);}});}}
drawable中的btn_selctor.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="false" android:drawable="@android:color/transparent"></item> <item android:state_pressed="true" android:drawable="@drawable/aa_button_gray_pressed"></item></selector>
drawable中的progress_selctor.xml
<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/progress"> <clip android:gravity="left" android:clipOrientation="horizontal" android:drawable="@drawable/aa_button_normal"/> </item></layer-list>
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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.jay.uidemo.progressbuttondemo.MainActivity" > <TextView android:id="@+id/texttitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="帶有進圖條的按鈕" /> <RelativeLayout android:layout_width="fill_parent" android:layout_height="50dp" android:gravity="bottom" android:layout_centerHorizontal="true" android:layout_centerVertical="true" > <ProgressBar android:id="@+id/progressBar" style="?android:attr/progressBarStyleHorizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/aa_button_gray_normal" android:max="100" android:progress="0" android:progressDrawable="@drawable/progress_selector" /> <Button android:id="@+id/downLoadBtn" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="下載" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:background="@drawable/btn_selector" /> </RelativeLayout></RelativeLayout>
源碼下載:
http://pan.baidu.com/s/1hql9qOc
Android UI組件進階(1)——帶進度條的按鈕