
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源 去关联
1、自定义类继承Component
2、添加构造函数,对应的几个构造
3、添加测量函数onMeasure对应onEstimateSize,实现Component.EstimateSizeListener
4、添加计算函数onLayout对应onArrange,实现ComponentContainer.ArrangeListener
5、添加绘制函数onDraw不变,实现Component.DrawTask
之后就可以实现具体的逻辑了
代码如下:
public class TextDemo extends Component implements Component.DrawTask, Component.EstimateSizeListener, ComponentContainer.ArrangeListener {
private Paint mPaint = new Paint();
private int color;
private RectFloat mRectFloat;
{
/**
* 防抖动
*/
mPaint.setDither(true);
/**
* 抗锯齿,降低分辨率,提高绘制效率
*/
mPaint.setAntiAlias(true);
}
public TextDemo(Context context) {
this(context, null);
}
public TextDemo(Context context, AttrSet attrSet) {
this(context, attrSet, null);
}
public TextDemo(Context context, AttrSet attrSet, String styleName) {
super(context, attrSet, styleName);
initialize(attrSet);
setEstimateSizeListener(this);
addDrawTask(this);
}
/**
* 获取自定义属性
*
* @param attrs
*/
private void initialize(AttrSet attrs) {
color = attrs.getAttr("text_color").get().getIntegerValue();
}
/**
* 计算
*
* @param i
* @param i1
* @param i2
* @param i3
* @return
*/
@Override
public boolean onArrange(int i, int i1, int i2, int i3) {
// do something
return false;
}
/**
* 测量
*
* @param i
* @param i1
* @return
*/
@Override
public boolean onEstimateSize(int i, int i1) {
// do something
return false;
}
/**
* 绘制
*
* @param component
* @param canvas
*/
@Override
public void onDraw(Component component, Canvas canvas) {
// do something
canvas.drawRect(mRectFloat, mPaint);
}
}