android绘制动态圆角矩形时间条
来源:互联网 发布:物流app源码 编辑:程序博客网 时间:2024/06/05 22:48
直接上代码RoundRectLine.java
public class RoundRectLine {private RectF roundRect = new RectF();private int imgWidth;private int imgHeight;private int lineWidth;private float rx;private float ry;private Paint pen = new Paint();private RectF[] angleoval = new RectF[4];public RoundRectLine() {for(int i = 0 ; i <angleoval.length ; i++){angleoval[i] = new RectF();}}public void setRoundRectLine(int left, int top, int width, int height,float rx, float ry, int lineWidth) {this.rx = rx;this.ry = ry;this.lineWidth = lineWidth;roundRect.set(left, top, left + width, top + height);imgWidth = width + 2 * lineWidth;imgHeight = height + 2 * lineWidth;pen.setStrokeWidth(lineWidth);angleoval[0].set(left + width - 2 * rx, top, left + width, top + 2 * ry);angleoval[1].set(left + width - 2 * rx, top + height - 2 * ry, left+ width, top + height);angleoval[2].set(left, top + height - 2 * ry, left + 2 * rx, top+ height);angleoval[3].set(left, top, left + 2 * rx, top + 2 * ry);}public void drawroundRectLine(Canvas canvas, int timeIndex, int totalTime) {pen.setAntiAlias(true); // 消除锯齿pen.setStyle(Style.STROKE);int curAngle = 360 - timeIndex * 360 / totalTime;if (curAngle >= 0 && curAngle <= 60) {pen.setColor(Color.RED);int curX = (int) (roundRect.left + rx + curAngle* (roundRect.right - roundRect.left - 2 * rx) / 60);int cury = (int) roundRect.top;canvas.drawLine(roundRect.left + rx, roundRect.top, curX, cury, pen);}if (curAngle > 60 && curAngle <= 90) {pen.setColor(Color.RED);int curovalangle = 90 * (curAngle - 60) / 30;canvas.drawArc(angleoval[0], 270, curovalangle, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 90 && curAngle <= 150) {pen.setColor(Color.YELLOW);int curX = (int) roundRect.right;int cury = (int) (roundRect.top + ry + (curAngle - 90)* (roundRect.bottom - roundRect.top - 2 * ry) / 60);canvas.drawLine(roundRect.right, roundRect.top + ry, curX, cury,pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 150 && curAngle <= 180) {pen.setColor(Color.YELLOW);int curovalangle = 90 * (curAngle - 150) / 30;canvas.drawArc(angleoval[1], 0, curovalangle, false, pen);canvas.drawLine(roundRect.right, roundRect.top + ry,roundRect.right, roundRect.bottom - ry, pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 180 && curAngle <= 240) {pen.setColor(Color.GREEN);int curX = (int) (roundRect.right - rx - (curAngle - 180)* (roundRect.right - roundRect.left - 2 * rx) / 60);int cury = (int) roundRect.bottom;canvas.drawLine(roundRect.right - rx, roundRect.bottom, curX, cury,pen);canvas.drawArc(angleoval[1], 0, 90, false, pen);canvas.drawLine(roundRect.right, roundRect.top + ry,roundRect.right, roundRect.bottom - ry, pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 240 && curAngle <= 270) {pen.setColor(Color.GREEN);int curovalangle = 90 * (curAngle - 240) / 30;canvas.drawArc(angleoval[2], 90, curovalangle, false, pen);canvas.drawLine(roundRect.right - rx, roundRect.bottom,roundRect.left + rx, roundRect.bottom, pen);canvas.drawArc(angleoval[1], 0, 90, false, pen);canvas.drawLine(roundRect.right, roundRect.top + ry,roundRect.right, roundRect.bottom - ry, pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 270 && curAngle <= 330) {pen.setColor(Color.GREEN);int curX = (int) roundRect.left;int cury = (int) (roundRect.bottom - ry - (curAngle - 270)* (roundRect.bottom - roundRect.top - 2 * ry) / 60);canvas.drawLine(roundRect.left, roundRect.bottom - ry, curX, cury,pen);canvas.drawArc(angleoval[2], 90, 90, false, pen);canvas.drawLine(roundRect.right - rx, roundRect.bottom,roundRect.left + rx, roundRect.bottom, pen);canvas.drawArc(angleoval[1], 0, 90, false, pen);canvas.drawLine(roundRect.right, roundRect.top + ry,roundRect.right, roundRect.bottom - ry, pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}if (curAngle > 330 && curAngle <= 360) {pen.setColor(Color.GREEN);int curovalangle = 90 * (curAngle - 330) / 30;canvas.drawArc(angleoval[3], 180, curovalangle, false, pen);canvas.drawLine(roundRect.left, roundRect.bottom - ry,roundRect.left, roundRect.top + ry, pen);canvas.drawArc(angleoval[2], 90, 90, false, pen);canvas.drawLine(roundRect.right - rx, roundRect.bottom,roundRect.left + rx, roundRect.bottom, pen);canvas.drawArc(angleoval[1], 0, 90, false, pen);canvas.drawLine(roundRect.right, roundRect.top + ry,roundRect.right, roundRect.bottom - ry, pen);canvas.drawArc(angleoval[0], 270, 90, false, pen);canvas.drawLine(roundRect.left + rx, roundRect.top, roundRect.right- rx, roundRect.top, pen);}}}
调用:
public final static int OPERATETIME = 1000
RoundRectLine rectLine = new RoundRectLine(); rectLine.setRoundRectLine(100,100,200,200,50,50,10); if (timeIndex <= GAME_OPERATETIME) { rectLine.drawroundRectLine(canvas, timeIndex, GAME_OPERATETIME); }timeIndex+= 20; if(timeIndex > GAME_OPERATETIME){ timeIndex = 0; }
- android绘制动态圆角矩形时间条
- android绘制圆角矩形
- android view绘制圆角矩形(转)
- html5绘制动态矩形
- android cavas 绘制坐标系并显示矩形波方波-横轴为当前时间动态更新(不用achartengine)
- Ps绘制圆角矩形
- GDI+绘制圆角矩形
- MFC绘制圆角矩形
- Canvas绘制圆角矩形
- GDI+绘制圆角矩形
- C#绘制圆角矩形
- 在Android中绘制圆角矩形图片
- 在Android中绘制圆角矩形图片
- android 绘制椭圆 圆角矩形 详细解析
- 在Android中绘制圆角矩形图片
- ios-矩形-圆角矩形-椭圆-圆形的绘制
- 渐变,圆角矩形体的绘制
- C# GDI+ 绘制圆角实心矩形
- 8.Android Widget开发案例(世界杯倒计时)
- 2、《学通Java Web的24堂课》纠错之二 —— 错误1-错误15
- 黑马程序员--关于交通灯的笔记
- VS2010 生产力增强工具与建模功能包
- 你真的会二分查找吗?
- android绘制动态圆角矩形时间条
- dbus-python 在 thread 中运行时会随机出错
- Android开发环境搭建全程演示
- 杭电hdu 1213 How Many Tables并查集
- 9.Android Handler的使用
- UVa Triangle Wave
- 技术帖:如何把mobi文件转化成pdf
- JAVA开发入门
- IT职场人生系列之二十一:如何学习新语言(一)