ProgressBar简介
ProgressBar是进度条组件,通常用于向用户展示某个耗时操作完成的进度,而不让用户感觉是程序失去了响应,从而更好地提升用户界面的友好性
指定ProgressBar的显示风格
style=”?android:attr/progressBarStyleLarge” 大环形进度条
style=”?android:attr/progressBarStyleSmall” 小环形进度条
style=”?android:attr/progressBarStyleHorizontal” 水平进度条
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar0"
style="?android:attr/progressBarStyleSmall"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/progressBar2"
style="?android:attr/progressBarStyleLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<ProgressBar
android:id="@+id/progressBar3"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
ProgressBar的分类
1>可以精确显示进度(可以显示刻度或者百分比)
2>不可以精确显示进度(一直转啊转,雷伊斯一个过场动画)
ProgressBar的关键属性
android:max="100" ——最大显示进度
android:progress="50" ——第一显示进度
android:secondaryProgress="80" ——第二显示进度
android:indeterminate="true" ——设置是否精确显示
true表示不精确显示,false表示精确显示进度
ProgressBar的关键方法
1>setProgress(int) ——设置第一进度
2>setSecondaryProgress(int) ——设置第二进度
3>getProgress() ——获取第一进度
4>getSecondaryProgress() ——获取第二进度
5>incrementProgressBy(int) ——增加或减少第一进度
6>incrementSecondaryProgressBy(int) ——增加或减少第二进度
7>getMax() ——获取最大进度
package com.example.angel.listviewpro;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
public class MainAcitivity extends AppCompatActivity implements View.OnClickListener{
private ProgressBar progressBar;
private Button add;
private Button reduce;
private Button reset;
private TextView text;
ProgressDialog progressDialog;
private Button show;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
init();
}
private void init() {
progressBar = (ProgressBar) findViewById(R.id.horiz);
add = (Button) findViewById(R.id.add);
reduce = (Button) findViewById(R.id.reducue);
reset = (Button) findViewById(R.id.reset);
text = (TextView) findViewById(R.id.text);
show= (Button) findViewById(R.id.show);
//getProgress获取第一进度条进度
int first = progressBar.getProgress();
int second = progressBar.getSecondaryProgress();
int max = progressBar.getMax();
text.setText("第一进度百分比:"+(int)(first/(float)max*100)+"% 第二进度百分比:"
+(int)(second/(float)max*100)+"%");
add.setOnClickListener(this);
reduce.setOnClickListener(this);
reset.setOnClickListener(this);
show.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()){
case R.id.add:
//增加第一进度和第二进度10个刻度
progressBar.incrementProgressBy(10);
progressBar.incrementSecondaryProgressBy(10);
break;
case R.id.reducue:
//减少第一进度和第二进度10个刻度
progressBar.incrementProgressBy(-10);
progressBar.incrementSecondaryProgressBy(-10);
break;
case R.id.reset:
progressBar.setProgress(50);
progressBar.setSecondaryProgress(80);
break;
case R.id.show:
//新建ProgressDialog对象
progressDialog = new ProgressDialog(this);
//设置显示风格
progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
//设置标题
progressDialog.setTitle("安琪网");
//设置对话框的文字信息
progressDialog.setMessage("欢迎大家关注我啊");
//设置图标
progressDialog.setIcon(R.mipmap.ic_launcher);
//设置关于进度条的一些属性
progressDialog.setMax(100);
//设定初始化已经增长到的进度
progressDialog.incrementSecondaryProgressBy(50);
//进度条是明确显示进度
progressDialog.setIndeterminate(false);
//设定一个确定按钮
progressDialog.setButton(DialogInterface.BUTTON_POSITIVE,"确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
Toast.makeText(MainAcitivity.this,"欢迎大家关注我的博客哦",Toast.LENGTH_LONG).show();
}
});
//是否可以通过返回按钮退出对话框
progressDialog.setCancelable(true);
//显示ProgressDialog
progressDialog.show();
break;
}
text.setText("第一进度百分比:"+(int)progressBar.getProgress()/(float)progressBar.getMax()
*100+ "% 第二进度百分比:" +(int)progressBar.getSecondaryProgress()/(float)
progressBar.getMax()*100+"%");
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:secondaryProgress="80"
android:progress="50"
android:max="100"
android:id="@+id/horiz"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<Button
android:id="@+id/add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="增加" />
<Button
android:id="@+id/reducue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="减少" />
<Button
android:id="@+id/reset"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="重置" />
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="重置"
android:textSize="20sp"/>
<Button
android:id="@+id/show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="显示进度条对话框" />
</LinearLayout>