Android进度条控件ProgressBar使用

ProgressBar有四种样式,圆形的(大,中,小)和直条形的(水平)

对应的style为

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBar2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBar3"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBar4"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

注:style不写默认为中型进度条

使用requestWindowFeature来实现带进度条的标题栏

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.Window;

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //启用精确显示进度的进度条和不显示精度的进度条标题栏
        requestWindowFeature(Window.FEATURE_PROGRESS);
        requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_main);
        
        //设置可见性
        setProgressBarVisibility(true);
        setProgressBarIndeterminateVisibility(true);
        //设置精确进度条的值,默认10000上限,达到10000后进度条不显示
        setProgress(9999);
    }

}

在activity中对ProgressBar进行简单操作

用TextView实时显示第一进度条和第二进度条

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements OnClickListener{
    private ProgressBar progress;
    private Button add, reduce, reset;
    private TextView text;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置无标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        //初始化
        init();
    }
    
    private void init() {
        progress = (ProgressBar) findViewById(R.id.horiz);
        add = (Button) findViewById(R.id.add);
        reduce  = (Button) findViewById(R.id.reduce);
        reset  = (Button) findViewById(R.id.reset);
        text =  (TextView) findViewById(R.id.textView1);
        
        //获取第一进度条进度
        int first = progress.getProgress();
        //获取第二进度条进度
        int second = progress.getSecondaryProgress();
        //获取最大进度
        int max = progress.getMax();
        text.setText(
                "第一进度百分比:"+(int)(first/(float)max*100)+
                "% 第二进度百分比:"+(int)(second/(float)max*100)+"%");
        add.setOnClickListener(this);
        reduce.setOnClickListener(this);
        reset.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.add:
            //增加第一进度条和第二进度条
            progress.incrementProgressBy(10);
            progress.incrementSecondaryProgressBy(10);
            break;
        case R.id.reduce:
            progress.incrementProgressBy(-10);
            progress.incrementSecondaryProgressBy(-10);
            break;
        case R.id.reset:
            progress.setProgress(50);
            progress.setSecondaryProgress(80);
            break;
        }
        text.setText(
                "第一进度百分比:"+(int)(progress.getProgress()/(float)progress.getMax()*100)+
                "% 第二进度百分比:"+(int)(progress.getSecondaryProgress()/(float)progress.getMax()*100)+"%");

    }
    
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBar2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/progressBar3"
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <ProgressBar
        android:id="@+id/horiz"
        android:max="100"
        android:secondaryProgress="80"
        android:progress="50"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/add"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt1" />

    <Button
        android:id="@+id/reduce"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt2" />

    <Button
        android:id="@+id/reset"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/bt3" />

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

</LinearLayout>

使用Dialog形式

import android.support.v7.app.ActionBarActivity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity{
    private ProgressDialog progress;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置无标题栏
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);
        
        init();
    }
    
    private void init() {
        //设置ProgressDialog的显示
        
                //新建对象
                progress = new ProgressDialog(this);
                //设置风格
                progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                //设置标题
                progress.setTitle("reading");
                //设置文本内容
                progress.setMessage("please waiting");
                //设置图标
                progress.setIcon(R.drawable.ic_launcher);
                
                progress.setMax(100);
                progress.incrementProgressBy(50);
                //是否非精确显示
                progress.setIndeterminate(false);
                progress.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //此处不能写this
                        Toast.makeText(MainActivity.this, "ok...", Toast.LENGTH_SHORT).show();
                    }
                });
                //是否可以点击取消键(android自带的返回键)
                progress.setCancelable(false);
                //显示
                progress.show();
    }
    
}

posted @ 2015-06-27 12:11  omnis  阅读(311)  评论(0编辑  收藏  举报