Search code examples
javaandroidhuawei-mobile-serviceshuawei-developersharmonyos

What is the alternative function in HarmonyOS for onDraw in Android OS?


I am implementing a custom component in HarmonyOS using Java SDK. In Android to draw a custom view, we override the onDraw method from the View class.

In HarmonyOS the Component class doesn’t have the onDraw method. How to resolve it?


Solution

  • You are right, onDraw() is not available in Component class. But, we have another way to achieve the same functionality. You can implements Component.DrawTask in your custom component to implement the same functionality. You would need to call addDrawTask in the constructor to add a drawing task.

    So, your Custom component code will look like this -

    import ohos.agp.components.AttrSet;
    import ohos.agp.components.Component;
    import ohos.agp.render.Canvas;
    import ohos.app.Context;
    import org.jetbrains.annotations.Nullable;
    
    public class CustomComponent extends Component implements Component.DrawTask {
        
        public CustomComponent(Context context, @Nullable AttrSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            addDrawTask(this);
        }
    
        @Override
        public void onDraw(Component component, Canvas canvas) {
            //Do your stuff here
        }
    }