Android studio 进度条
16lz
2021-01-23
在我们使用进度条 ProgressBar的时候
它的常用属性为:
进度条默认为圆形 ,但是我们这里使用是线型
style="?android:attr/progressBarStyleHorizontal"
android:progress=“33”
android:max=“100”
线程休眠
Thread.sleep(100);//抛异常
SystemClock.sleep(100);//不会抛异常
public class MainActivity extends AppCompatActivity { private ProgressBar pb_main_pb1; private int progress; private TextView tv_main_tv1; 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 ++; pb_main_pb1.setProgress(progress); tv_main_tv1.setText(progress+"%"); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pb_main_pb1 = this.findViewById(R.id.pb_main_pb1); tv_main_tv1 = this.findViewById(R.id.tv_main_tv1); } public void studyToast(View view) { Toast.makeText(this, "hello Toast", Toast.LENGTH_LONG).show(); } public void setProgressBar(View view) { if(0 == progress){ new MyThread().start(); } } private class MyThread extends Thread{ @Override public void run() { super.run(); while (true){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } if(progress == 100){ progress =0; break; } Message msg = new Message(); msg.what = 1; myHandler.sendMessage(msg); } } }}
线程注意事项:
我们在操作 (ProgressBar除外) 控件时如果把控件放在子线程里就会出问题,所以我们这里通过MyHandler来处理这个问题。
我们在平常中下载资源时肯定不止是一个的,所以我们通过msg.what = (1,2,3,4…);来代表每一个进程,然后用MyHandler 来获取它的值,然后经过if判断来调用这个线程就行了,这里为了简单的诉说整个过程我采用的是if,你们可以用swith这样会更好一点。
SubThread->MainThread 错误 SubThread->Handler->MainThread 正确
更多相关文章
- 安卓的下拉控件Spinner
- 上接系出名门Android(8) - 控件(View)之TextSwitcher, Gallery,
- android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
- 【特效】【自定义控件】关键字飘飞效果
- 日期选择控件
- 控件 -- WebView -- Android与JS交互
- Android--取得布局中指定控件的宽高
- Android oncreate中获取控件宽高
- 控件 - ImageView