为 android 创建进度条

Creating a progress bar for android

您好,我是一般线程的新手,我正在尝试设置一个进度条,使用 sleep 方法每半秒递增一次,直到 100。我一直在使用我在网上找到的很多语法时遇到问题,当我启动这个程序时,它不显示进度条,而是显示一个旋转的加载图标。这是我的:

public class main extends ActionBarActivity {
Handler mHandler;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    final Button startButton = (Button) findViewById(R.id.startbutton);

    startButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showDialog(1);
            startPb();
        }
    });
}
private void startPb(){

    final ProgressBar pb = (ProgressBar) findViewById(R.id.progressBar);
    pb.setIndeterminate(false);
    pb.setProgress(0);
    new Thread(new Runnable(){

        public void run(){
            for (int i = 0; i <= 100; i++)
                try {
                    Thread.sleep(500);
                    pb.setProgress(i);
                    System.out.println(i);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            pb.post(new Runnable() {
                public void run() {
                    pb.incrementProgressBy(1);
                }
            });

        }
    }).start();
}

我觉得我没有在上面的代码中正确实现进度条。 布局:

<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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".Counter"
android:id="@+id/counter"
tools:ignore="InvalidId">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="startButton"
    android:id="@+id/startbutton"
    android:layout_centerHorizontal="true" />

<ProgressBar
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar"
    android:layout_below="@+id/startbutton"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

旋转的进度条是不确定的进度条。要使用实际的进度条,您需要调用:

pb.setIndeterminate(false);

进度条样式也是一个问题。这是解释进度条样式类型的很好的参考。 What's the meaning of android:progressBarStyle attribute in ProgressBar?