系列文章目录
前言
这系列的文章主要是基于扔物线的HenCoderPlus课程的源码来分析学习。
- 扔物线课程源码:PieChart.java
- Android官方文档:自定义绘制
创建绘制对象
我们需要创建一个画笔🖌Paint
来绘制我们的饼图。
public class PieChart extends View {
// 饼图的半径
private static final int RADIUS = (int) Utils.dp2px(150);
// 抗锯齿(可以有效的解决毛边的问题)
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
// 饼图的分布区域
RectF bounds = new RectF();
// 系统默认调用的就是这个构造函数
public PieChart(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
}
设置布局位置
如果您的视图不需要对其大小进行特殊控制,您只需替换一个方法,即
onSizeChanged()
。系统会在首次为您的视图分配大小时调用onSizeChanged()
,如果视图大小由于任何原因而改变,系统会再次调用该方法。请在onSizeChanged()
中计算位置、尺寸以及其他与视图大小相关的任何值,而不要在每次绘制时都重新计算。
摘录自Andorid官方文档:处理布局事件
public class PieChart extends View {
// 饼图的半径
private static final int RADIUS = (int) Utils.dp2px(150);
// 抗锯齿(可以有效的解决毛边的问题)
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
// 饼图的分布区域
RectF bounds = new RectF();
public PieChart(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* 在此视图的大小发生变化时调用。
*/
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh