看着是个按钮,其实它是个进度条,这个实例比较简单,就是使用一个handler每隔一段时间发送消息,进度条前进5%,直到100%。
界面布局:
如图所示:
xml布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_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=".MainActivity" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="带有进度条的Button" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="bottom" >
<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:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:background="@drawable/btn_selector"
android:text="下载" />
</RelativeLayout>
</RelativeLayout>
代码实现:
点击按钮后不断通过handler发送消息,一直到进度条达到100%的时候停止。
代码:
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case 1:
i += 5;
progressBar.setProgress(i);
if (i != 100) {
handler.sendEmptyMessageDelayed(new Message().what = 1, 500);
downLoadBtn.setText(i + "%");
} else if (i == 100) {
downLoadBtn.setText("下载完成");
}
break;
default:
break;
}
};
};
源码下载:点击下载
------解决方案--------------------
骚年,你还年轻。说实话,这里不适合你,整个论坛都是我小号,我只是看你可怜所以不断的换ID来回复你,满足一下你的虚荣心。
你要不相信,我再换个ID跟你说同样的话。 ......................不要不相信,不信你接着看。。。。。。
------解决方案--------------------
把Button的background设置成一个level drawable不就行了