自定义进度弧形条
来源:互联网 发布:手机注册淘宝店铺 编辑:程序博客网 时间:2024/06/11 05:18
public class CustomProgressBar extends View {private int mColor;private int mCircleWidth;private Paint mPaint, mTextpaint1, mTextpaint2;private int mProgress;private boolean stop;private int measuredHeight, measuredWidth;public CustomProgressBar(Context context, AttributeSet attrs) {super(context, attrs);init();}private void init() {mPaint = new Paint();mTextpaint1 = new Paint();mTextpaint2 = new Paint();mColor = Color.RED;mCircleWidth = 30;// 绘图线程new Thread() {public void run() {while (!stop) {mProgress++;postInvalidate();if (mProgress == 270) {stop = true;}try {Thread.sleep(50);} catch (InterruptedException e) {e.printStackTrace();}}};}.start();}@SuppressLint("DrawAllocation")@Overrideprotected void onDraw(Canvas canvas) {// 画圆弧int centre = getWidth()/ 2; // 获取圆心的x坐标int radius = centre - mCircleWidth / 2;// 半径mPaint.setStrokeWidth(mCircleWidth); // 设置圆环的宽度mPaint.setAntiAlias(true); // 消除锯齿mPaint.setStyle(Paint.Style.STROKE); // 设置空心mPaint.setStrokeCap(Paint.Cap.ROUND);RectF oval = new RectF(centre - radius, centre - radius, centre+ radius, centre + radius); // 用于定义的圆弧的形状和大小的界限mPaint.setColor(mColor); // 设置圆环的颜色canvas.drawArc(oval, -90, mProgress, false, mPaint); // 根据进度画圆弧// 写百分比mTextpaint1.setStyle(Paint.Style.FILL);mTextpaint1.setTextSize(150);mTextpaint1.setColor(mColor);String str = (int) ((mProgress * 1.0 / 360) * 100) + "%";float txtLength = mTextpaint1.measureText(str);canvas.drawText(str, centre - txtLength / 2, getHeight() / 3,mTextpaint1);// 写当前时间Calendar c = Calendar.getInstance();int mHour = c.get(Calendar.HOUR_OF_DAY);int mMinut = c.get(Calendar.MINUTE);String mMinuts;if (mMinut < 10) {mMinuts = "0" + mMinut;} else {mMinuts = mMinut + "";}mTextpaint2.setColor(Color.GRAY);mTextpaint2.setTextSize(50);String txt4 = mHour + " : " + mMinuts;float txtLength1 = mTextpaint2.measureText(txt4);canvas.drawText(txt4, centre - txtLength1 / 2,getHeight() / 2,mTextpaint2);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubmeasuredHeight = measure(heightMeasureSpec);measuredWidth = measure(widthMeasureSpec);setMeasuredDimension(measuredWidth, measuredHeight);}private int measure(int measureSpec) {// TODO Auto-generated method stubint specMode = MeasureSpec.getMode(measureSpec);int specSize = MeasureSpec.getSize(measureSpec);int result = 500;if (specMode == MeasureSpec.AT_MOST) {result = specSize;} else if (specMode == MeasureSpec.EXACTLY) {result = specSize;}return result;}
0 0
- 自定义进度弧形条
- 自定义 弧形滑动条 CricleScrollView
- 自定义控件来创建进度控制条
- Android自定义带进度的刻度条
- android 弧形自定义view
- 自定义弧形进度条
- ugui制作弧形血条
- unity3d制作弧形血条,魔条
- swing自定义弧形边框 CurvedBorder
- 自定义弧形渐变进度条功能
- 自定义左下角弧形旋转菜单栏
- Andorid自定义拖动弧形进度条
- ugui 弧形血条制作笔记
- 自定义进度
- Android 自定义卫星式弧形菜单
- Android 利用二阶贝塞尔曲线自定义弧形动画
- Android 自定义卫星式弧形菜单
- 安卓自定义弧形刻度选择器
- C语言实现栈
- 【Unity Shader】第二节 为上一节课的shader增加属性
- Slider
- servlet初始
- http://blog.csdn.net/singwhatiwanna/article/details/42343847
- 自定义进度弧形条
- 2016 Multi-University Training Contest 1 1002 hdu 5724 博弈
- php % (末)
- C语言实现队列
- 改变ListView的item条目按下瞬间的背景
- mysql 中的MyISAM 和 InnoDB
- 查看linux配置(如CONFIG_X86_64)
- 防止多个控件重复点击
- Android如何实现自毁