您的位置:首页 > 移动开发 > Android开发

好记性不如烂笔杆-android学习笔记<六> ProgressBar简单使用

2012-11-20 16:21 483 查看
16,//ProgressBar使用
xml文件中定义ProgressBar
//水平进度条

<ProgressBar
android:id="@+id/firstBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:visibility="gone"<!--默认状态不可见 -->
/>


//默认圆圈形状滚动风格 style="?android:attr/progressBarStyle"

//Java文件,点击按钮启动滚动条

private int i = 0;
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(i == 0){
//设置进度条处于可见的状态
firstBar.setVisibility(View.VISIBLE);
secondBar.setVisibility(View.VISIBLE);
}else if(i < firstBar.getMax()){
//设置主进度条的当前值
firstBar.setProgress(i);
//设置第二进度条的当前值
firstBar.setSecondaryProgress(i + 10);
//因为默认的进度条无法显示进行的状态
//secondBar.setProgress(i);
}
else{
firstBar.setVisibility(View.GONE);
secondBar.setVisibility(View.GONE);
}
//进度条总长度的10%,逐次增加
i = i + 10;
}


17,//ProgressBar和Handler
//main.xml文件中

<ProgressBar
android:id="@+id/handlerBar"
android:layout_width="200dip"
android:layout_height="wrap_content"
style="?android:attr/progressBarStyleHorizontal"
android:visibility="gone"
/>


//Java文件中

//启动按钮

启动按钮    onClick(View v) {
//调用方法将进度条设置为可见状态
bar.setVisibility(View.VISIBLE);
//将第一个线程添加到线程队列中
updateBarHandler.post(updateThread);
}
//使用匿名内部类来复写Handler当中的handerMessage方法
Handler updateBarHandler = new Handler(){

@Override
public void handleMessage(Message msg) {
//设置ProgressBar的当前值
bar.setProgress(msg.arg1);
//将线程添加到线程队列中
updateBarHandler.post(updateThread);
}
};
//线程类,该类使用匿名内部类的方式进行声明
Runnable updateThread = new Runnable(){
int i = 0;
@Override
public void run() {
System.out.println("Begin Thread " + i);
i = i + 10 ;
//得到一个消息对象,Message类是由Android操作系统提供
Message msg = updateBarHandler.obtainMessage();
//将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员传递消息,优点是系统性能消耗较少
msg.arg1 = i ;
try{
//设置前线程睡眠1000ms
Thread.sleep(1000);
}catch(InterruptedException e){
e.printStackTrace();
}
if(i <= 100){
//将msg对象加入到消息队列当中
updateBarHandler.sendMessage(msg);
}
else{
//如果当i的值为100时,就将线程对象从handler当中移除,Progress停止
updateBarHandler.removeCallbacks(updateThread);
}
}
};


这一部分可能有点问题,先记录这里
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: