你追我赶进度条

来源:互联网 发布:路由器故障 网络堵塞 编辑:程序博客网 时间:2024/06/05 17:19


package com.example.androidtest;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Paint.Style;import android.graphics.RectF;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.view.animation.DecelerateInterpolator;import android.view.animation.LinearInterpolator;import android.widget.Scroller;public class CircleProgress extends View {public CircleProgress(Context context) {super(context);init();}public CircleProgress(Context context, AttributeSet attrs) {super(context, attrs);init();}public CircleProgress(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init() {timer=new Scroller(getContext(),new LinearInterpolator());paint=new Paint();paint.setStrokeWidth(circleWidth);paint.setStyle(Style.STROKE);paint.setColor(Color.BLUE);paint.setAntiAlias(true);}private Scroller timer;private int DURATION=5000;//动画持续时间private Paint paint;private int circleWidth=50;//环的宽度private boolean flag;private boolean isInit;private RectF arcRectf;private int centerX;private int centerY;private int radius;@Overrideprotected void onDraw(Canvas canvas) {if (!isInit) {int min=Math.min(getWidth(), getHeight())-circleWidth;centerX=getWidth()/2;centerY=getHeight()/2;radius=(min-circleWidth-circleWidth)/2;arcRectf=new RectF(centerX-radius,centerY-radius, centerX+radius,centerY+radius);isInit=true;}if (flag) {paint.setColor(Color.RED);canvas.drawCircle(centerX,centerY,radius,paint);paint.setColor(Color.BLUE);canvas.drawArc(arcRectf, timer.getCurrX(),timer.getCurrY(), false, paint);}else{paint.setColor(Color.BLUE);canvas.drawCircle(centerX,centerY,radius,paint);paint.setColor(Color.RED);canvas.drawArc(arcRectf, timer.getCurrX(),timer.getCurrY(), false, paint);}} @Overridepublic void computeScroll() {if (timer.computeScrollOffset()) {invalidate();}else{flag=!flag;timer.startScroll(-90, 0, 360, 360, DURATION);invalidate();}} }

        

0 0
原创粉丝点击