package com.lfk.justwetools.View.Proportionview;
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.graphics.Region;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import java.util.TreeMap;
public class ProportionView extends View{
private int ColorSet[] = {0xFFFEDD74, 0xFF82D8EF, 0xFFF76864, 0xFF80BD91, 0xFFFD9FC1, 0xFF};
private float totalSize = 0;
private Paint paint = new Paint();
private Path border = new Path();
private RectF rect = new RectF();
private TreeMap<String, Long> map = null;
public ProportionView(Context context) {
super(context);
}
public ProportionView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ProportionView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//获取长宽
int width = this.getWidth();
int height = this.getHeight();
//设置画笔消除锯齿
paint.setAntiAlias(false);
//剪切底层模板形状
rect.set(0, 0, width, height);
border.addRoundRect(rect, 40, 40, Path.Direction.CCW);
canvas.clipPath(border, Region.Op.REPLACE);
//背景色
canvas.drawColor(Color.LTGRAY);
if(map != null && !map.isEmpty()) {
//获取总大小
totalSize = 0;
for (String key : map.keySet()) {
totalSize += map.get(key);
}
//设置色块
int offset = 0;
int colorOffset = 0;
for (String key : map.keySet()) {
paint.setColor(ColorSet[colorOffset++ % ColorSet.length]);
canvas.drawRect(offset, 0, offset += (float) width * (float) map.get(key) / totalSize, height, paint);
}
}
}
public void setData(TreeMap<String, Long> data) {
map = data;
postInvalidate();
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}