Android高级UI组件progressbar进度条
原创我两天前学习过。datepicker日历,time picker时间以及chronrmeter计时器的基本控制,让我们今天来看看它。Android其中一位前辈UI组件progressbar嗯,进度条基本上是每个App它不仅可以实时显示您的网络速度加载进度,还可以增加用户的欣赏度,大大提高软件的友好性能。那么今天就让我们简单了解一下吧!
对于我想展示的代码,我在下面发布的代码是实现一个进度条,我将随机生成一个。0-10当前实时进度是累计的总和,睡眠时间是200毫秒,如200毫秒生成数值8那么进度条是8%作为下一个。200毫秒必须生成数值9此时进度条到达(8%+9%)即17%当总数达到100当进度条完成时,toast加载后,进入下一个界面!
代码段中有大量注释。如果你不理解,可以在评论区留言或私下信任我。如果内容中有任何不足和错误,请更正!
显然,它是用来完成这样一个功能的。handler我将简要介绍线程的知识,稍后将有一个关于它的问题。handler读出处理机制的内容
(请注意,我在下面介绍的数量是由我自己定义的,不应被理解为是必要的。currentprogress等)
简单介绍:
简单handler可以理解为主线程,thread可以简单地理解为子线程,Android主线程无法再完成耗时的操作,因此必须在子线程中完成耗时的运算,然后调用主线程的handler对象用sendmessage方法将信息发送到主线程,主线程将更新UI部件信息!它在子线程中使用。currentprogress.what=0然后在主线程中msg.what==0事实上,这有点相似。startactivityforresult的形式!
代码如下:
public class MainActivity extends AppCompatActivity {
private ProgressBar progressBar;
private Handler handler;
private int currentprogerss=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar=findViewById(R.id.progressbar);
handler=new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
if(msg.what==0){
progressBar.setProgress(currentprogerss);
}else {
Toast.makeText(MainActivity.this,"加载完成",Toast.LENGTH_SHORT).show();
progressBar.setVisibility(View.GONE);
Intent intent=new Intent(MainActivity.this,Main2Activity.class);
startActivity(intent);
}
}
};
new Thread(new Runnable() {
@Override
public void run() {
while (true){
currentprogerss=work();
Message message=new Message();
if(currentprogerss<100){
message.what=0;
handler.sendMessage(message);
}else {
message.what=1;
handler.sendMessage(message);
break;
}
}
}
//模拟耗时的操作
private int work() {
currentprogerss+=Math.random()*10;
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
return currentprogerss;
}
}).start();
}
}
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除