Android 控件之ProgressBar进度条



 



ProgressBar是Android的进度条。体验效果

 

android ProgressBar 黑色 android progressbar 样式_进度条

下面详细介绍ProgressBar

一、说明

可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度。一个进度条也可不确定其进度。在不确定模式下,进度条显示循环动画。这种模式常用于应用程序使用任务的长度是未知的。

二、XML重要属性

    android:progressBarStyle:默认进度条样式

    android:progressBarStyleHorizontal:水平样式

 

三、重要方法

getMax():返回这个进度条的范围的上限

getProgress():返回进度

getSecondaryProgress():返回次要进度

incrementProgressBy(int diff):指定增加的进度

isIndeterminate():指示进度条是否在不确定模式下

setIndeterminate(boolean indeterminate):设置不确定模式下

setVisibility(int v):设置该进度条是否可视

四、重要事件

onSizeChanged(int w, int h, int oldw, int oldh):当进度值改变时引发此事件

五、实例

1.布局文件

<?xml version="1.0" encoding="utf-8"?>
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">    <ProgressBar android:id="@+id/progress_horizontal"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="75" />    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="默认进度条" />           <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">        <Button android:id="@+id/decrease"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="减少" />        <Button android:id="@+id/increase"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="增加" />    </LinearLayout>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自定义进度条" />           <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">        <Button android:id="@+id/decrease_secondary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二减少" />        <Button android:id="@+id/increase_secondary"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="第二增加" />    </LinearLayout>
</LinearLayout>
 
2.Java代码
package wjq.WidgetDemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.ProgressBar;public class ProgressBarDemo extends Activity {
 /* (non-Javadoc)
  * @see android.app.Activity#onCreate(android.os.Bundle)
  */
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  
   requestWindowFeature(Window.FEATURE_PROGRESS);
         setContentView(R.layout.probarpage);
         setProgressBarVisibility(true);
 
         final ProgressBar progressHorizontal = (ProgressBar) findViewById(R.id.progress_horizontal);
         setProgress(progressHorizontal.getProgress() * 100);
         setSecondaryProgress(progressHorizontal.getSecondaryProgress() * 100);
 
         Button button = (Button) findViewById(R.id.increase);
         button.setOnClickListener(new Button.OnClickListener() {
             public void onClick(View v) {
                 progressHorizontal.incrementProgressBy(1);
                 // Title progress is in range 0..10000
                 setProgress(100 * progressHorizontal.getProgress());
             }
         });         button = (Button) findViewById(R.id.decrease);
         button.setOnClickListener(new Button.OnClickListener() {
             public void onClick(View v) {
                 progressHorizontal.incrementProgressBy(-1);
                 // Title progress is in range 0..10000
                 setProgress(100 * progressHorizontal.getProgress());
             }
         });         button = (Button) findViewById(R.id.increase_secondary);
         button.setOnClickListener(new Button.OnClickListener() {
             public void onClick(View v) {
                 progressHorizontal.incrementSecondaryProgressBy(1);
                 // Title progress is in range 0..10000
                 setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());
             }
         });         button = (Button) findViewById(R.id.decrease_secondary);
         button.setOnClickListener(new Button.OnClickListener() {
             public void onClick(View v) {
                 progressHorizontal.incrementSecondaryProgressBy(-1);
                 // Title progress is in range 0..10000
                 setSecondaryProgress(100 * progressHorizontal.getSecondaryProgress());
             }
         });
 
 }}

页面标题中的长形进度条 

  代码实现: ①先设置一下窗口风格特性

 

 

 

 

 

1. requestWindowFeature(Window.FEATURE_PROGRESS);
2. //请求一个窗口进度条特性风格
3. setContentView(R.layout.main);
4. setProgressBarVisibility(true);
5. //设置进度条可视

 

 

复制代码

 

 

②然后设置进度值

 

 

 

 

1. setProgress(myProgressBar.getProgress() * 100);
2. //设置标题栏中前景的一个进度条进度值
3. setSecondaryProgress(myProgressBar.getSecondaryProgress() * 100);
4. //设置标题栏中后面的一个进度条进度值
5. //ProgressBar.getSecondaryProgress() 是用来获取其他进度条的进度值

 

 

复制代码

 

 

ProgressDialog
ProgressDialog中的圆形进度条 

   

    ProgressDialog一般用来表示一个系统任务或是开启任务时候的进度,有一种稍等的意思。 代码实现:

 

 

 

 

 

1.   ProgressDialog mypDialog=new ProgressDialog(this);
2.             //实例化
3.             mypDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
4.             //设置进度条风格,风格为圆形,旋转的
5.             mypDialog.setTitle("Google");
6.             //设置ProgressDialog 标题
7.             mypDialog.setMessage(getResources().getString(R.string.second));
8.             //设置ProgressDialog 提示信息
9.             mypDialog.setIcon(R.drawable.android);
10.             //设置ProgressDialog 标题图标
11.             mypDialog.setButton("Google",this);
12.             //设置ProgressDialog 的一个Button
13.             mypDialog.setIndeterminate(false);
14.             //设置ProgressDialog 的进度条是否不明确
15.             mypDialog.setCancelable(true);
16.             //设置ProgressDialog 是否可以按退回按键取消
17.             mypDialog.show();
18.             //让ProgressDialog显示

 

 

复制代码

 




ProgressDialog中的长形进度条 

      

 

代码实现:

 

 

 

 

1. ProgressDialog mypDialog=new ProgressDialog(this);
2. //实例化
3.             mypDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
4.             //设置进度条风格,风格为长形,有刻度的
5.             mypDialog.setTitle("地狱怒兽");
6.             //设置ProgressDialog 标题
7.             mypDialog.setMessage(getResources().getString(R.string.second));
8.             //设置ProgressDialog 提示信息
9.             mypDialog.setIcon(R.drawable.android);
10.             //设置ProgressDialog 标题图标
11.             mypDialog.setProgress(59);
12.             //设置ProgressDialog 进度条进度
13.             mypDialog.setButton("地狱曙光",this);
14.             //设置ProgressDialog 的一个Button
15.             mypDialog.setIndeterminate(false);
16.             //设置ProgressDialog 的进度条是否不明确
17.             mypDialog.setCancelable(true);
18.             //设置ProgressDialog 是否可以按退回按键取消
19.             mypDialog.show();
20.             //让ProgressDialog显示
  1.  

 

 

复制代码

 




AlertDialog.Builder 


AlertDialog中的圆形ProgressBar 

 

①先来设计一个Layout,待会儿作为一个View,加入AlertDialog.Builder

 

 

 

 

 

 

1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3.     android:layout_gravity="center_horizontal" 
4.     android:layout_width="wrap_content"
5.     android:layout_height="wrap_content">
6.     <LinearLayout android:id="@+id/LinearLayout01"
7.     android:layout_width="wrap_content" 
8.     android:layout_height="wrap_content">
9. </LinearLayout>
10.     <ProgressBar android:layout_gravity="center_vertical|center_horizontal"
11.         android:layout_height="wrap_content" 
12.         android:progress="57"
13.         android:id="@+id/myView_ProgressBar2" 
14.         android:layout_width="wrap_content">
15. </ProgressBar>
16. </LinearLayout>

 

 

复制代码

 

 

②代码罗

 

 

 

 

 

1. private AlertDialog.Builder AlterD,AlterD2;
2. //定义提示对话框
3. private LayoutInflater layoutInflater;
4. //定义布局过滤器
5. private LinearLayout myLayout;
6. //定义布局
7. layoutInflater2=(LayoutInflater) getSystemService(this.LAYOUT_INFLATER_SERVICE);
8. //获得系统的布局过滤服务
9. myLayout2=(LinearLayout) layoutInflater2.inflate(R.layout.roundprogress, null);
10. //得到事先设计好的布局
11. AlterD2.setTitle(getResources().getString(R.string.RoundO));
12. //设置对话框标题
13. AlterD2.setIcon(R.drawable.ma);
14. //设置对话框图标
15. AlterD2.setMessage(getResources().getString(R.string.ADDView));
16. //设置对话框提示信息
17. AlterD2.setView(myLayout2);
18. //设置对话框中的View
19. AlterD2.show();
20. //让对话框显示

 

 

复制代码

 

 

AlertDialog中的长形ProgressBar(可控制) 

  ①先来设计一个Layout,待会儿作为一个View,加入AlertDialog.Builder

 

 

 

 

 

    1. <?xml version="1.0" encoding="utf-8"?>
    2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    3.     android:layout_gravity="center_horizontal" 
    4. android:layout_width="wrap_content"
    5.     android:layout_height="wrap_content">
    6.     <Button 
    7. android:layout_height="wra
    ...