Android学习笔记08:Handler的使用二与进度条的结合
【摘要】
[Android开发视频教学].01_14_Handler(一)之一 学习使用Handler
点击“开始”,进度条显示出来,然后以每次5%的进度加载,达到100%之后,进度清空为0,再次点击,重新运行进度条
主要使用到的功能是使用Handler传递Message信息
XML
<LinearLayout xml...
[Android开发视频教学].01_14_Handler(一)之一 学习使用Handler
点击“开始”,进度条显示出来,然后以每次5%的进度加载,达到100%之后,进度清空为0,再次点击,重新运行进度条
主要使用到的功能是使用Handler传递Message信息
XML
<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" >
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone"
style="@android:style/Widget.ProgressBar.Horizontal" />
<Button
android:id="@+id/startButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/startButton" />
</LinearLayout>
package fengda.android11;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
@SuppressLint("HandlerLeak")
public class Activity11 extends Activity {
private Button startButton;
private ProgressBar progressBar;
//进度变量
private int i=0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_activity11);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new StartButtonListener());
}
class StartButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
progressBar.setVisibility(View.VISIBLE);
handler.post(addProgressBar);
}
}
Handler handler = new Handler(){
//得到msg传递过来的信息
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
//获得msg的参数数据
progressBar.setProgress(msg.arg1);
progressBar.setSecondaryProgress(msg.arg1+5);
//如果进度条满了,就清空进度,重置进度变量i,并清除回调函数
if (msg.arg1==105){
i=0;
progressBar.setProgress(0);
progressBar.setSecondaryProgress(0);
handler.removeCallbacks(addProgressBar);
} else {
handler.post(addProgressBar);
}
}
};
Runnable addProgressBar = new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
//获得Handler的Message对象,向msg中放置信息
Message msg = handler.obtainMessage();
msg.arg1=i;
//将msg传递出去
handler.sendMessage(msg);
try {
Thread.sleep(500);
} catch (Exception e) {
// TODO: handle exception
}
i=i+5;
}
};
}
文章来源: blog.csdn.net,作者:fengda2870,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/fengda2870/article/details/8164690
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)