<?xml version="1.0" encoding="utf-8"?>
<com.example.lx.week1lianxicao.dazhuanpan.MyCircle
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/cir"
/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="25dp"
android:layout_marginTop="25dp"
android:src="@mipmap/start"/>
package com.example.lx.week1lianxicao.dazhuanpan;
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;
/**
- 自定义View
- 1:onMeasure 测量
- 2:onLayout 位置
- 3:onDraw 绘制
- Paint (画笔)和 Canvas(画布)
*/
public class MyCircle extends View implements View.OnClickListener {
private String[] contents = new String[]{"美 女", "女 神", "热 舞", "丰 满", "性 感", "知 性"};
public int[] colors = new int[]{Color.parseColor("#8EE5EE"), Color.parseColor("#FFD700"), Color.parseColor("#FFD39B"), Color.parseColor("#FF8247"), Color.parseColor("#FF34B3"), Color.parseColor("#F0E68C")};
private Paint mPaint;
private int mwidth;
public MyCircle(Context context, AttributeSet attrs) {
super(context, attrs);
mPaint = new Paint();//定义画笔用来绘制圆形
setOnClickListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
mPaint.setColor(Color.BLUE);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setAntiAlias(true);//刮胡子
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 startjj=i*60;
canvas.drawArc(rectF,startjj,60,true,mPaint);
}
mPaint.setColor(Color.RED);
mPaint.setTextSize(30);
for(int i=0;i<contents.length;i++){
int startjj=i*60;
Path path=new Path();
path.addArc(rectF,startjj,60);
canvas.drawTextOnPath(contents[i],path,50,50,mPaint);
}
}
private void startAnima() {
RotateAnimation rnm=new RotateAnimation(0,360,mwidth/2,mwidth/2);
rnm.setDuration(3000);
rnm.setFillAfter(true);
startAnimation(rnm);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(300,300);
mwidth=getMeasuredWidth();
}
@Override
public void onClick(View v) {
startAnima();
}
}