private RotateAnimation rotateAnimation;
private Paint mPaint;
private Paint strPaint;
private int mWidth;
private int mPadding;
private boolean isStart = false;
private RectF rectF;
private String str=“start”;
private String[] contents = new String[]{“1”,“2”,“3”,“4”,“5”,“6”};
private int viewX;
private int viewY;
private int mRawX;
private int mRawY;
public DiscView(Context context) {
this(context,null);
}
public DiscView(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public DiscView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initPaint();
initAnim();
setOnClickListener(this);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
mRawX= (int) event.getRawX();
mRawY= (int) event.getRawY();
return super.onTouchEvent(event);
}
private void initAnim() {
//找到控件的中心点,
double random = Math.random();
rotateAnimation = new RotateAnimation(0f,360f, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
rotateAnimation.setRepeatCount(-1);
rotateAnimation.setFillAfter(true);
}
private void initPaint() {
strPaint = new Paint();
strPaint.setStyle(Paint.Style.STROKE);
strPaint.setAntiAlias(true);
strPaint.setColor(Color.WHITE);
strPaint.setStrokeWidth(5);
mPaint = new Paint();
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setAntiAlias(true);
mPaint.setColor(Color.WHITE);
mPaint.setStrokeWidth(3);
}
//绘制自定义view的样式
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(1000,1000);
mWidth = getMeasuredWidth();
mPadding = 5;
initRect();
}
private void initRect() {
rectF = new RectF(0,0,mWidth,mWidth);
}
@Override
protected void onDraw(Canvas canvas) {
viewX = (int) this.getX();
viewY = (int) this.getY();
super.onDraw(canvas);
//绘制圆
mPaint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(mWidth/2,mWidth/2,mWidth/2-mPadding,mPaint);
//绘制 6个椭圆
mPaint.setStyle(Paint.Style.FILL);
initArc(canvas);
//绘制里面的小圆
mPaint.setColor(Color.RED);
mPaint.setStyle(Paint.Style.FILL);
canvas.drawCircle(mWidth/2,mWidth/2,50,mPaint);
mPaint.setColor(Color.WHITE);
mPaint.setTextSize(24);
Rect rect = new Rect();
mPaint.getTextBounds(str, 0, str.length(), rect);
int strWidth = rect.width();//文本的宽度
int textHeight = rect.height();//文本的高度
canvas.drawText(str,mWidth/2-25+25-strWidth/2,mWidth/2+textHeight/2,mPaint);
}
private void initArc(Canvas canvas) {
for(int i=0;i<6;i++){
mPaint.setColor(colors[i]);
canvas.drawArc(rectF,(i-1)*60+60,60,true,mPaint);
}
for(int i=0;i<6;i++){
mPaint.setColor(Color.BLACK);
Path path = new Path();
path.addArc(rectF,(i-1)*60+60,60);
canvas.drawTextOnPath(contents[i],path,60,60,mPaint);
}
}
public int[] colors = new int[]{Color.parseColor("#8EE5EE"),Color.parseColor("#FFD700"),Color.parseColor("#FFD39B"),Color.parseColor("#FF8247"),Color.parseColor("#FF34B3"),Color.parseColor("#F0E68C")};
@Override
public void onClick(View view) {
if(!isStart){
isStart = true;
rotateAnimation.setDuration(800);
rotateAnimation.setInterpolator(new LinearInterpolator());//不停顿
rotateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
isStart=false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
startAnimation(rotateAnimation);
}else{
isStart = false;
stopAnim();
}
}
public void stopAnim() {
clearAnimation();
}
/*Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what){
case 1:
setRoundDom();
break;
}
}
};
private void setRoundDom() {
double random = Math.random();
RotateAnimation rotateAnimation = new RotateAnimation(-100, (float) (180 * random), 200, 200)
;
rotateAnimation.setFillAfter(true);
for(int i=0;i<1000l)
}*/