ProgressBar与ProgressDialog

Android中有两种显示进度条的方式:ProgressBar与ProgressDialog。

public class ProgressBar extends View {...}

public class ProgressDialog extends AlertDialog {...}
public class AlertDialog extends Dialog implements DialogInterface {...}
public class Dialog implements DialogInterface, Callback, android.view.KeyEvent.Callback, OnCreateContextMenuListener {...}
比较:

ProgressDialog是动态显示出来 并且遮挡住Activity 此时不能进行交互。
而ProgressBar是静态显示在布局中的 加载过程中 同时可以与Activity进行交互

ProgressDialog进度条对话框是在加载数据的时候,弹出的一个对话框,会将部分Activity遮住。
ProgressBar进度条是在页面中嵌入的一个组件,不是弹出的层

ProgessBar 进度条

使用XML配置,自定义ProgressBar 样式 和大小宽度

在ui控件中设置progressbar
默认是圆圈类型

制定ProgressBar的显示风格——ProgressBar的style属性(默认是中环形进度条)
style="?android:attr/progressBarStyleLarge"  
//大环形进度条
style="?android:attr/progressBarStyleSmall"  
//小环形进度条
style="?android:attr/progressBarStyleHorizontal"  
//水平进度条
ProgressBar的分类
  1. 可以精确显示进度(百分比等刻度)

2.不可以精确显示进度(一直转啊转,类似一个过场动画)

标题上ProgressBar的设置
progressbar

在onCreate()中

//启用窗口特征,启用带进度条和不带进度的进度条
requestWindowFeature(Window.FEATURE_PROGRESS);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.main);
//显示两种进图条
setProgressBarVisibility(true);
setProgressBarIndeterminateVisibility(true);
setProgress(9999); //Max=10000

ProgressBar关键属性(最大显示进度、第一显示进度、第二显示进度)

android:max="100" 最大显示进度
android:progress="50" 第一显示进度
android:secondaryProgress="80" 第二显示进度
android:indeterminate="true"   设置是否精确显示  true-不精确显示进度

ProgressBar关键方法

1.setProgress(int)
2.setSecondaryProgress(int)
3.getProgress();
4.getSecondaryProgress();
5.incrementProgressBy(int)  增加或减少第一进度
6.incrementSecondaryProgressBy(int) 增加或减少第二进度
7.getMax() 获取最大进度

在doInbackground方法中定义

sumLength=entity.getContentLength()
    while(len=inputStream.read(b)){
    curLength+=len
    publishProgress(sumLength,curLength);
}

在onProgressUpdate(Integer… values)中进行进度条更新

progressBar.setMAX(values[0]);
progressBar.setProgress(values[1]);
//此处的textView可以通过构造方法传过来
textview.setText(values[1]+"/"+values[0]);

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)//:当进度值改变时引发此事件

ProgressDialog

使用时必须新建ProgressDialog对象,在运行时会弹出“对话框”作为提醒,此时应用程序后台失去焦点(即此时无法对UI组件进行操作),直到进程结束后,才会将控制权交给应用程序。

//进度条对话框
ProgressDialog pd=new ProgressDialog(this);
//在异步构造方法中
pd.setTitle("");
pd.setMessage("");
pd.setIcon(R.drawable.xxx);
pd.setMax(100);
pd.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pd.setCancelable(true);//是否可以用退回键清除进度对话框

在onPreExecute()方法中显示对话框

pd.show();

在doInbackground方法中

int sumLength=inputStream.avaiable();
int curLength=0;
int len=0;
while((len=inputStream.read(b))!=-1){
    curLength+=len;
    int progress=curLength*100/sumLength;
    publishProgress(progress);
}

在onpostExecute()方法中 关闭对话框

pd.dimiss();

ProgressDialog 可以在相应的Activity中配置 它的基本的样式,例如一下基本方法:

ProgressDialog mProgressDialog = new ProgressDialog(TestProgerssDialogActivity.this); 
// 设置mProgressDialog风格 
mProgressDialog.setProgress(ProgressDialog.STYLE_SPINNER);//圆形 
mProgressDialog.setProgress(ProgressDialog.STYLE_HORIZONTAL);//水平 
// 设置mProgressDialog标题 
mProgressDialog.setTitle("提示"); 
// 设置mProgressDialog提示 
mProgressDialog.setMessage("这是一个圆形进度条对话框"); 
// 设置mProgressDialog进度条的图标 
mProgressDialog.setIcon(R.drawable.flag); 
// 设置mProgressDialog的进度条是否不明确 
//不滚动时,当前值在最小和最大值之间移动,一般在进行一些无法确定操作时间的任务时作为提示,明确时就是根据你的进度可以设置现在的进度值 
mProgressDialog.setIndeterminate(false); 
//mProgressDialog.setProgress(m_count++); 
// 是否可以按回退键取消 
mProgressDialog.setCancelable(true); 
// 设置mProgressDialog的一个Button 
mProgressDialog.setButton("确定", new DialogInterface.OnClickListener() 
{ 
@Override 
public void onClick(DialogInterface dialog, int which) 
{ 
    dialog.cancel(); 
} 
}); 
// 显示
mProgressDialogmProgressDialog.show();

参考:

ProgressBar与ProgressDialog的区别

ProgressDialog 和 ProgressBar 个人使用

Android–ProgressBar(进度条)、ProgressDialog(进度条对话框)

进度条ProgressBar及ProgressDialog

圆形progressbar设计样式

参考:【Android进度条】三种方式实现自定义圆形进度条ProgressBar

使用方式相同:
android:indeterminateDrawable=”@drawable/progressbar3”

   <ProgressBar
        style="?android:attr/progressBarStyleSmall"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:indeterminateDrawable="@drawable/progressbar3" />

1、帧动画

<?xml version="1.0" encoding="UTF-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item
        android:drawable="@drawable/refresh1"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh5"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh10"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh15"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh20"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh25"
        android:duration="150" />
    <item
        android:drawable="@drawable/refresh30"
        android:duration="150" />
</animation-list>

2、旋转渐变色圆圈

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">

        <gradient
            android:centerColor="#FFFFFF"
            android:centerY="0.50"
            android:endColor="#1E90FF"
            android:startColor="#000000"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

3、旋转任意图片

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/ic_launcher"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值