在我们使用进度条 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     正确

更多相关文章

  1. 安卓的下拉控件Spinner
  2. 上接系出名门Android(8) - 控件(View)之TextSwitcher, Gallery,
  3. android —— 自定义控件 竖向的ViewPager,上下滑动的组件,android
  4. 【特效】【自定义控件】关键字飘飞效果
  5. 日期选择控件
  6. 控件 -- WebView -- Android与JS交互
  7. Android--取得布局中指定控件的宽高
  8. Android oncreate中获取控件宽高
  9. 控件 - ImageView

随机推荐

  1. 在编译Android时,开机不锁屏
  2. android 短信是否发送成功
  3. Android   收集索引贴
  4. Android电话秀(二)
  5. Android计算缓存大小、清空缓存
  6. Android取消EditText自动获取焦点
  7. Android开发中Android与网页(JavaScrip)t的
  8. Android 实现 选择文件对话框
  9. Android Studio 报错小记
  10. 6.1.5 GridView详解