在许多项目中会用到进度条,大多数时候都需要根据客户的需求都不会采用系统默认的进度条。
比如进入一个软件时碰到的动画界面,这个可以用animation实现:
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
androidneshot="false">
<item android:drawable="@drawable/loading01" android:duration="200"/>
<item android:drawable="@drawable/loading02" android:duration="200"/>
<item android:drawable="@drawable/loading03" android:duration="200"/>
</animation-list>
用一帧帧的图片拼成。
但是如果这个进度条需要根据加载的实际情况而进行改变时,animation明显不实用了。
最简单的方式:
//barAboveBitmap 是要绘制的进度条,可以用一张进度条图片;progress 为具体进度 progressBg为ImageView,可以
//为它设置一个比进度条图片稍微大点的背景,这样两者配合起来就像一个完整的进度条了
//也可以结合RelativeLayout相互组件之间可以覆盖的特性给进度条加个显示进度的数字
int width = barAboveBitmap.getWidth();
int height = barAboveBitmap.getHeight();
Bitmap barBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
// 画进度条
Canvas canvas = new Canvas(barBitmap);
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(width * progress / 100, 0);
path.lineTo(width * progress / 100, height);
path.lineTo(0, height);
canvas.clipPath(path);
canvas.drawBitmap(barAboveBitmap, 0, 0, barPaint);
progressBg.setImageBitmap(barBitmap);
比如进入一个软件时碰到的动画界面,这个可以用animation实现:
<?xml version="1.0" encoding="utf-8"?>
<animation-list
xmlns:android="http://schemas.android.com/apk/res/android"
androidneshot="false">
<item android:drawable="@drawable/loading01" android:duration="200"/>
<item android:drawable="@drawable/loading02" android:duration="200"/>
<item android:drawable="@drawable/loading03" android:duration="200"/>
</animation-list>
用一帧帧的图片拼成。
但是如果这个进度条需要根据加载的实际情况而进行改变时,animation明显不实用了。
最简单的方式:
//barAboveBitmap 是要绘制的进度条,可以用一张进度条图片;progress 为具体进度 progressBg为ImageView,可以
//为它设置一个比进度条图片稍微大点的背景,这样两者配合起来就像一个完整的进度条了
//也可以结合RelativeLayout相互组件之间可以覆盖的特性给进度条加个显示进度的数字
int width = barAboveBitmap.getWidth();
int height = barAboveBitmap.getHeight();
Bitmap barBitmap = Bitmap.createBitmap(width, height, Config.ARGB_8888);
// 画进度条
Canvas canvas = new Canvas(barBitmap);
Path path = new Path();
path.moveTo(0, 0);
path.lineTo(width * progress / 100, 0);
path.lineTo(width * progress / 100, height);
path.lineTo(0, height);
canvas.clipPath(path);
canvas.drawBitmap(barAboveBitmap, 0, 0, barPaint);
progressBg.setImageBitmap(barBitmap);