Android 控件之ProgressBar进度条
ProgressBar是Android的进度条。体验效果
下面详细介绍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显示
复制代码
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
...