Spinner的简单功能和用法
常用属性有
<LinearLayout 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:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- 定义一个大环型进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Large"/>
<!-- 定义一个中等环型进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@android:style/Widget.ProgressBar.Large.Inverse"/>
</LinearLayout>
<!-- 定义一个小环型进度条 -->
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<!-- 定义一个水平型进度条 -->
<ProgressBar android:id="@+id/bar1"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100" />
<!-- 定义一个水平型进度条,并改变轨道背景 -->
<ProgressBar android:id="@+id/bar2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:max="100"
android:progressDrawable="@drawable/ic_launcher"
style="@android:style/Widget.ProgressBar.Horizontal"
/>
</LinearLayout>
代码实现部分
package com.test.progressbar;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ProgressBar;
public class MainActivity extends Activity {
//该程序模拟填充长度为100
private int [] data = new int [100];
int hasData = 0;
//记录ProgressBar的完成度
int status = 0;
ProgressBar bar1,bar2;
//创建一个负责跟新的handler
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
//表明消息由该程序发送
if(msg.what == 0x111){
bar1.setProgress(status);
bar2.setProgress(status);
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar1 = (ProgressBar)findViewById(R.id.bar1);
bar2 = (ProgressBar)findViewById(R.id.bar2);
//改变ui一般不再主程序运行,需要创建一个新的工作线程来进行然后然后通过handler发回主线程。
//具体如何创建工作线程和发送消息可以参考Handler和thread
//在这里启动线程来执行任务
new Thread(){
@Override
public void run() {
while(status < 100){
//获取耗时的操作的完成百分比
status = doWork();
//发送消息
mHandler.sendEmptyMessage(0x111);
}
}
}.start();
}
//模拟一个耗时操作
public int doWork(){
//为数组元素赋值
data[hasData++] = (int) (Math.random()*100);
try {
Thread.sleep(100);
} catch (Exception e) {
e.printStackTrace();
}
return hasData;
}
}