Android - Canvas在翻译后没有绘图?

时间:2018-06-04 06:11:59

标签: android kotlin android-canvas android-custom-view

我正在制作一个自定义视图,我从左到右依次水平绘制线条。当组合的所有线的集合宽度与视图的宽度相交时,我将翻译视图。在翻译视图后,视图向左移动,但canvas.drawLine在翻译视图后立即停止绘制线条。解决这个问题的方法是什么?

       for(someCondition){

        canvas?.drawLine(startX,startY,stopX,stopY,linePaint)

        if(startX > (width)){
            log("Invisible , setting translation to ${-(startX - width)}")
            translationX = -(startX - width)
        }

        log("width is $width and startX is $startX")

       }

一旦我翻译,画布就会停止绘制,但翻译会继续发生。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题而无需翻译任何内容。

每当行的集合宽度越过View的宽度时,我增加了数组的起始索引,这样我只绘制了n个元素,其中n是可以放在视图宽度内的最大行数。每次将新元素添加到数组时,此解决方案还有助于避免绘制不必要的行。