onDraw()
我在组件中找不到该方法。有人可以向我解释如何在 Harmony OS 中覆盖组件的 onDraw 方法吗?
问问题
82 次
2 回答
0
实现Component.DrawTask
接口,使用onDraw
方法执行绘制任务。您可以使用Canvas
此方法提供的精确控制 UI 元素的外观。在执行绘图任务之前,您需要定义一个Paint
.
示例代码如下:
public class CustomComponent extends Component implements Component.DrawTask,Component.EstimateSizeListener {
// Circle width
private static final float CIRCLE_STROKE_WIDTH = 100f;
// Paint for drawing the circle
private Paint circlePaint;
public CustomComponent(Context context) {
super(context);
// Initialize the Paint.
initPaint();
// Add a draw task.
addDrawTask(this);
}
private void initPaint(){
circlePaint = new Paint();
circlePaint.setColor(Color.BLUE);
circlePaint.setStrokeWidth(CIRCLE_STROKE_WIDTH);
circlePaint.setStyle(Paint.Style.STROKE_STYLE);
}
@Override
public void onDraw(Component component, Canvas canvas) {
// Draw a circle whose center coordinate is (500,500) and radius is 400.
canvas.drawCircle(500,500,400,circlePaint);
}
...
}
关于 Harmony OS 中的覆盖onDraw()
方法的详细信息,请参阅文档。
于 2021-08-03T06:35:00.257 回答
0
- 首先您必须为您的自定义组件实现Component.DrawTask,然后您将能够覆盖onDraw()并执行自定义绘图操作。例如,
public class CustomComponent extends Component implements Component.DrawTask {
public CustomComponent(Context context) {
super(context);
// DrawTask
addDrawTask(this::onDraw);
}
@Override
public void onDraw(Component component, Canvas canvas) {
...
}
}
于 2021-07-31T12:30:29.270 回答