Android 中的进度条 ProgressBar
程序员文章站
2022-03-30 16:29:21
...
进度条:ProgressBar
1、常用属性
style=”?android:attr/progressBarStyleHorizontal” 默认为圆形
android:progress=”33” 进度属性值
android:max=”100” 终止进度
:
2、例如:
<!--帧布局-->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="60dp">
<!--存放百分比-->
<TextView
android:id="@+id/main_btn_tv"
android:layout_width="60dp"
android:layout_height="match_parent" />
<!--进度条-->
<ProgressBar
android:id="@+id/main_btn_pb1"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:max="100"
android:layout_height="60dp" />
</FrameLayout>
3、方法:
public class MainActivity extends AppCompatActivity {
//初始化
private ProgressBar main_btn_pb1;
private int progress;
private TextView main_btn_tv;
private MyHandler myHandler = new MyHandler();
private int code = 1 ;
private class MyHandler extends Handler{//子线程访问主线程
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(code == msg.what){
progress ++ ;//每过一段时间,进度条属性值+1
main_btn_pb1.setProgress(progress);
main_btn_tv.setText(progress + "%");//以百分比的样式展示在页面上
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main_btn_pb1 = this.findViewById(R.id.main_btn_pb1);//进度条的id
main_btn_tv = this.findViewById(R.id.main_btn_tv);//百分比的id
}
//进度条开始运行的方法
public void setProgress(View view) {
if(0 == progress){//如果等于0
new MyThread().start();//开始跑
}
}
//线程
private class MyThread extends Thread{
@Override
public void run() {
super.run();
while (true){
try {
Thread.sleep(100);//设置休眠时间0.1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
if(progress == 100){//如果进度值属性为100
progress = 0;//就终止运行
break;
}
Message msg = new Message();
msg.what = 1 ;
myHandler.sendMessage(msg);
}
}
}
}
效果图:
4、线程休眠
Thread.sleep(100);//抛异常
SystemClock.sleep(100);//不会抛异常
5、线程注意事项:
不能在主线程中执行耗时的操作,只能在子线程中操作
另外,在子线程中不能操作主线程中的控件(ProgressBar除外)
6、线程小结
SubThread->MainThread 错误
SubThread->Handler->MainThread 正确
上一篇: springboot项目后台部署运行
推荐阅读
-
【JNI】C++ 中的Android log使用格式化字符串输入
-
Android中创建一个透明的进度对话框实例
-
android中判断sim卡状态和读取联系人资料的方法
-
Android自定义View中attrs.xml的实例详解
-
Android TextView 在java代码中改变字体的颜色的方法
-
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
-
Android解决ScrollView下嵌套ListView和GridView中内容显示不全的问题
-
Android实现带进度条的WebView
-
Android中ACTION_CANCEL的触发机制与滑出子view的情况
-
Android中Activity之间跳转和参数传递的实例