鸿蒙自定义组件以及流程问题 原创
飞中缘a
发布于 2021-3-25 17:37
浏览
3收藏
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);
}
}
©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
已于2021-3-26 16:28:00修改
赞
2
收藏 3
回复
相关推荐
请问view.draw(canvas)怎么替代
如果能够再详细点就更好了~
onDraw(Component component, Canvas canvas)
用这个
简单明了
感谢支持!