有关ProgressBar的一个问题,进度条只会在进度达到最大才显示出来,中间过程不会出现,这是为什么?请指点

移动开发 码拜 4年前 (2016-09-11) 553次浏览
这是MainActivity.java  :
package com.example.application.progressbar;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ProgressBar;
public class MainActivity extends AppCompatActivity {
ProgressBar progressBar;
private int status = 0;    //设置进度条的值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
progressBar = (ProgressBar) findViewById(R.id.progressbar1);
//进度条的值每次加1
while(status < 100)
{
status++;
try{
Thread.sleep(100);
}
catch(Exception e)
{
}
progressBar.setProgress(status);
}
}
}
这是布局文件:
<?xml version=”1.0″ encoding=”utf-8″?>
<RelativeLayout 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:paddingBottom=”@dimen/activity_vertical_margin”
android:paddingLeft=”@dimen/activity_horizontal_margin”
android:paddingRight=”@dimen/activity_horizontal_margin”
android:paddingTop=”@dimen/activity_vertical_margin”
tools:context=”com.example.application.progressbar.MainActivity”>
<ProgressBar
android:id=”@+id/progressbar1″
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
style=”@android:style/Widget.ProgressBar.Horizontal”
android:max = “100”
android:progressDrawable=”@drawable/progress1″/>
</RelativeLayout>
解决方案

5

不能再UI主线程使用sleep,会导致视图变化看不到,可以使用handler机制

15

引用:
Quote: 引用:

不能再UI主线程使用sleep,会导致视图变化看不到,可以使用handler机制

为什么在UI主线程使用sleep会导致视图变化看不到?

使用sleep,主线程堵塞,UI自然卡住。一般不会在UI主线程中进行网络操作slepp操作等。
其次processbar,还是用Handler吧,这个教程应该很多,就不多累赘了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有关ProgressBar的一个问题,进度条只会在进度达到最大才显示出来,中间过程不会出现,这是为什么?请指点
喜欢 (0)
[1034331897@qq.com]
分享 (0)