Android 如何绘制自定义视图的小部分?

Android 如何绘制自定义视图的小部分?,android,canvas,android-custom-view,Android,Canvas,Android Custom View,我正在使用一个自定义视图来绘制矩形(在某个点上,矩形中会有文本),我希望在选中时高亮显示每个矩形,当用户选择矩形时,每隔几秒钟就会发生一次。我应该在onDraw中实现高亮显示的矩形,还是有办法只重绘每个矩形而不重绘整个视图?我曾想过使用“invalidate(rect)”,但它已经被弃用了 我试着考虑一下,与仅仅重画一个矩形相比,使整个视图无效的代价 protected void onDraw(Canvas canvas) { super.onDraw(canvas);

我正在使用一个自定义视图来绘制矩形(在某个点上,矩形中会有文本),我希望在选中时高亮显示每个矩形,当用户选择矩形时,每隔几秒钟就会发生一次。我应该在onDraw中实现高亮显示的矩形,还是有办法只重绘每个矩形而不重绘整个视图?我曾想过使用“invalidate(rect)”,但它已经被弃用了

我试着考虑一下,与仅仅重画一个矩形相比,使整个视图无效的代价

 protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        for(CellCoordinates cellCoordinate : mCoordinateCells) {
            canvas.drawText(" ", cellCoordinate.getRect().exactCenterX(), cellCoordinate.getRect().exactCenterY(), cellPaint);
        }
    }
使用invalidate()和onDraw()可以。脏rect实际上对API21没有影响+

不推荐使用脏rect,因为硬件加速视图中的图形模型不同


此外,您的矩形似乎可以实现为具有状态(选定和正常)的自定义绘图。它不会给您带来额外的性能,但可能有助于划分和构造绘图代码

这回答了你的问题吗?