1.代码
package com.example.day03shoppingcar;
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 java.util.Random;
public class MySector extends View implements View.OnClickListener {
private Paint paint;
private int mWidth;
private int mPadding;
private RectF mRectF;
private String mStr = “开始”;
private float kaishijiaodu;
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")};
public MySector(Context context, AttributeSet attrs) {
super(context, attrs);
paint=new Paint();
setOnClickListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//绘制 6个椭圆
initArc(canvas);
给小圆填充颜色
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(mWidth/2,mWidth/2,50,paint);
paint.setColor(Color.WHITE);
}
private void initArc(Canvas canvas) {
for (int i = 0; i < 6; i++) {
//依次根据i来设置6个扇形的颜色
paint.setColor(colors[i]);
//绘制圆弧,含圆心
canvas.drawArc(mRectF,60*i,60,true,paint);
}
for (int i = 0; i < 6; i++) {
//设置6个扇形的字体颜色
paint.setColor(Color.BLACK);
paint.setTextSize(24);
Path path=new Path();
//添加到弧上
path.addArc(mRectF,60*i,60);
//都保存添加到圆上
canvas.drawTextOnPath(contents[i],path,60,60,paint);
}
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
setMeasuredDimension(300, 300);
mWidth = getWidth();
mPadding = 1;
initRectf();
}
private void initRectf() {
//initrectf既可以画矩形,也可以画圆,而rect不可以画圆
mRectF = new RectF(0, 0, mWidth, mWidth);
}
@Override
public void onClick(View v) {
Random random = new Random();
int f =random.nextInt(1000);
RotateAnimation rotateAnimation = new RotateAnimation(kaishijiaodu, f+360,mWidth/2,mWidth/2);
//旋转时间
rotateAnimation.setDuration(3000);
//执行完后的位置
rotateAnimation.setFillAfter(true);
startAnimation(rotateAnimation);
kaishijiaodu=f%360;
}
}
2.布局
<?xml version="1.0" encoding="utf-8"?>
<com.example.day03shoppingcar.MySector
android:id="@+id/mySector"
android:layout_width=“wrap_content”
android:layout_height=“wrap_content”
android:layout_weight=“1” />