传统的ImageButtom图片等控件都是基于长方形等规则图形,若是想使用不规则图形,则可以使用SVG图片定义Path路径,从而打造不规则图形,代码如下:
public class ChinaMap extends View {
//初始化画笔
private Paint paint;
private Context context;
private ProviceItem select;
//装中国地图的Rectf
private RectF totalRect;
List<ProviceItem> itemList;
//地图缩放比例
private float scale =1.0f;
//省份颜色
int[] colorArray = new int[]{
0xFF239BD7, 0xFF30A9E5, 0xFF80CBF1, 0xFFFFFFFF};
//表示SVG图片是否解析完成
private boolean isEnd;
public ChinaMap(Context context) {
super(context);
}
public ChinaMap(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public ChinaMap(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
private void init(Context context) {
this.context = context;
paint = new Paint();
paint.setAntiAlias(true);
loadThread.start();
}
private Thread loadThread = new Thread(new Runnable() {
@Override
public void run() {
//定义一个输入流去解析xml
InputStream input = context.getResources().openRawResource(R.raw.china