package com.example.lianxiview.weight;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.RotateAnimation;
import android.widget.Toast;
import java.util.Random;
public class QiuView extends View implements View.OnClickListener{
private String[] contents = new String[]{“迪迪”, “女 神”, “lvxx”, “丑八怪”, “吕欣欣”, “奇丑无比”};
public int[] colors = new int[]{Color.parseColor("#8EE5EE"), Color.parseColor("#FFD700"), Color.parseColor("#FFD39B"), Color.parseColor("#FF8247"), Color.parseColor("#FF34B3"), Color.parseColor("#F0E68C")};
private int mWidth;
private Paint mPaint;
private Context mContext;
private float startjd;
public QiuView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext = context;
mPaint = new Paint();
setOnClickListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
mPaint.setColor(Color.YELLOW);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(3);
canvas.drawCircle(mWidth/2,mWidth/2,mWidth/2,mPaint);
RectF rectF=new RectF(0,0,mWidth,mWidth);
mPaint.setStyle(Paint.Style.FILL);
for (int i = 0; i < colors.length; i++) {
mPaint.setColor(colors[i]);
int startjd=i*60;
canvas.drawArc(rectF,startjd,60,true,mPaint);
}
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(24);
for (int i=0;i<contents.length;i++){
int startjd = i * 60;//i=0 0 i=1 =60
//Path 代表路径 想怎么画就怎么画
Path path = new Path();
path.addArc(rectF,startjd,60);
canvas.drawTextOnPath(contents[i],path,50,50,mPaint);
}
mPaint.setColor(Color.GREEN);
canvas.drawCircle(mWidth/2,mWidth/2,50,mPaint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(300, 300);
//得到测量过后的高和宽
mWidth = getMeasuredWidth();
}
@Override
public void onClick(View v) {
Toast.makeText(mContext, "吕欣欣奇丑无比", Toast.LENGTH_SHORT).show();
startAnim();
}
private void startAnim() {
Random random = new Random();
float jd = random.nextInt(1000);
RotateAnimation rotateAnimation = new RotateAnimation(startjd, jd+360, mWidth / 2, mWidth / 2);
rotateAnimation.setDuration(3000);
//保留最后执行完的位置
rotateAnimation.setFillAfter(true);
startAnimation(rotateAnimation);
startjd=jd%360;
}
}
attrs
Ⅰ、textSize——对应中间文本文字的大小
Ⅱ、text——对应中间文本
Ⅲ、circleColor——对应内圆的颜色
Ⅳ、arcColor——对应外环的颜色
Ⅴ、textColor——对应文本的颜色
Ⅵ、startAngle——对应外环的起始角度
Ⅶ、sweepAngle——对应外环扫描角度
<declare-styleable name="MyView">
<attr name="textSize" format="dimension" />
<attr name="text" format="string" />
<attr name="circleColor" format="color" />
<attr name="arcColor" format="color" />
<attr name="textColor" format="color" />
<attr name="startAngle" format="integer" />
<attr name="sweepAngle" format="integer" />
</declare-styleable>