import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.graphics.SweepGradient;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.view.View;
/**
* Created by glory on 2015/9/24.
*/
public class ScanningView extends View {
private static final int MSG_RUN = 1;
private Paint mCirclePaint;
private Paint mArcPaint;
private Paint mBgPain;
private RectF mRectf;
private int mSweep;
public ScanningView(Context context, AttributeSet attrs) {
super(context, attrs);
mCirclePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mCirclePaint.setColor(Color.parseColor("#33ff00"));
mCirclePaint.setStyle(Paint.Style.STROKE);
mCirclePaint.setStrokeWidth(2.f);
mArcPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mArcPaint.setColor(Color.GRAY);
mArcPaint.setStyle(Paint.Style.FILL);
mBgPain = new Paint(Paint.ANTI_ALIAS_FLAG);
mBgPain.setColor(Color.parseColor("#00ff00"));
mBgPain.setStyle(Paint.Style.FILL);
mRectf = new RectF();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int size = getMeasuredWidth();
setMeasuredDimension(size, size);
mRectf.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
mArcPaint.setShader(new SweepGradient(size/2,size/2,Color.parseColor("#00ff00"),Color.parseColor("#006600")));
}
@Override
protected void onDraw(Canvas canvas) {
int centerX = getMeasuredWidth()/2;
int centerY = getMeasuredHeight()/2;
canvas.save();
canvas.rotate(mSweep, centerX, centerY);
canvas.drawArc(mRectf, 0, 360, true, mBgPain);
canvas.drawArc(mRectf, 0, mSweep, true, mArcPaint);
canvas.restore();
canvas.drawCircle(centerX, centerY, centerX / 3, mCirclePaint);
canvas.drawCircle(centerX, centerY, (centerX *2)/ 3, mCirclePaint);
canvas.drawCircle(centerX, centerY, centerX, mCirclePaint);
}
public void start(){
mHandler.removeMessages(MSG_RUN);//防止产生多次消息
mHandler.sendEmptyMessage(MSG_RUN);
}
private Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
if(msg.what == MSG_RUN){
mSweep +=1;
if(mSweep>360){ mSweep = 0;}
postInvalidate();
sendEmptyMessage(MSG_RUN);
}
}
};
}
code扫描雷达
最新推荐文章于 2023-03-29 15:39:47 发布