android基本控件学习-----ProgressBar

时间:2022-10-26 17:14:50

ProgressBar(进度条)讲解

一、常用属性和基础使用实例

(1)常用属性:

android:max:进度条的最大值

android:progress:进度条已完成进度值

android:progressDrawable:设置轨道对应的Drawable对象

android:indeterminate如果设置为true,则精度条不精确的显示

android:indeterminateDrawable:设置不显示精度条的Drawable对象

android:indeterminateDuration:设置不精确显示进度条的持续时间

android:secondaryProgress:二级进度条,类似视频播放的一条是当前的播放进度,一条是缓存条,前者通过progress属性进行设置。

上面的属性同样在Java中也有相对应得方法:

getMax():返回这个进度条的范围的最大值

getProgress():返回当前的进度

getSecondaryProgress():返回次要的进度

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

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

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

(2)系统默认提供的进度条实例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"android基本控件学习-----ProgressBar
android:layout_height="match_parent"
android:orientation="vertical">
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
style="@android:style/Widget.ProgressBar.Small"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_marginTop="20dp"
android:layout_height="wrap_content"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
style="@android:style/Widget.ProgressBar.Large"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:max="100"
android:progress="20"
style="@android:style/Widget.ProgressBar.Horizontal"/>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:indeterminate="true"
style="@android:style/Widget.ProgressBar.Horizontal"/>
</LinearLayout>

二、自定义ProgressBar

package com.example.test3;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View; /**
* Created by coder-tu on 2016/1/11.
* 自定义圆形进度条
*/
public class CirclePgBar extends View {
private Paint mBackPaint;
private Paint mFrontPaint;
private Paint mTextPaint;
private float mStrokeWidth = 50;
private float mHalfStrokeWidth = mStrokeWidth /2;
private float mRadius = 200;
private RectF mRect;
private int mProgress = 0;
private int mTargetProgress = 90;
private int mMax = 100;
private int mWidth;
private int mHeight;
public CirclePgBar(Context context) {
super(context);
init();
}
public CirclePgBar(Context context, AttributeSet attrs) {
super(context, attrs);
init();
} public CirclePgBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
} /**
* 初始化相关参数
*/
private void init() {
// 背景白色画笔
mBackPaint = new Paint();
mBackPaint.setColor(Color.WHITE);
mBackPaint.setAntiAlias(true);
mBackPaint.setStyle(Paint.Style.STROKE);
mBackPaint.setStrokeWidth(mStrokeWidth);
// 绿色画笔
mFrontPaint = new Paint();
mFrontPaint.setColor(Color.GREEN);
mFrontPaint.setAntiAlias(true);
mFrontPaint.setStyle(Paint.Style.STROKE);
mFrontPaint.setStrokeWidth(mStrokeWidth);
// 圆圈里面的数字
mTextPaint = new Paint();
mTextPaint.setColor(Color.GREEN);
mTextPaint.setAntiAlias(true);
mTextPaint.setTextSize(80);
mTextPaint.setTextAlign(Paint.Align.CENTER);
} /**
* 重写测量大小的onMeasure方法和绘制View的核心方法onDraw()
* @param widthMeasureSpec
* @param heightMeasureSpec
*/
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mWidth = getRealSize(widthMeasureSpec);
mHeight = getRealSize(heightMeasureSpec);
setMeasuredDimension(mWidth,mHeight);
} private int getRealSize(int measureSpec) {
int result = 1;
int mode = MeasureSpec.getMode(measureSpec);
int size = MeasureSpec.getSize(measureSpec);
// 后面会对三种测量模式进行详细讲解
if (mode == MeasureSpec.AT_MOST || mode == MeasureSpec.UNSPECIFIED){
result = (int)(mRadius * 2 + mStrokeWidth);
}else{
result = size;
}
return result;
} @Override
protected void onDraw(Canvas canvas) {
initRect();
float angle = mProgress / (float) mMax * 360;
canvas.drawCircle(mWidth/2,mHeight/2,mRadius,mBackPaint);
canvas.drawArc(mRect,-90,angle,false,mFrontPaint);
canvas.drawText(mProgress + "%",mWidth/2 + mHalfStrokeWidth,mHeight/2 +mHalfStrokeWidth,mTextPaint);
if(mProgress < mTargetProgress){
mProgress += 1;
invalidate();
}
} private void initRect() {
if (mRect == null){
mRect = new RectF();
int viewSize = (int)(mRadius * 2);
int left = (mWidth - viewSize)/2;
int top = (mHeight - viewSize)/2;
int right = left + viewSize;
int bottom = top + viewSize;
mRect.set(left,top,right,bottom);
}
}
}

在布局文件中使用

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.example.test3.CirclePgBar
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>

效果图android基本控件学习-----ProgressBar

aaarticlea/png;base64,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" alt="" width="409" height="299" />