扇形 点击旋转

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” />

猜你喜欢

转载自blog.csdn.net/qq_43603372/article/details/84650887
今日推荐