我正在使用GraphView API,并且我将图表实现为难以处理。当用户触摸图表时,会出现一条从数据点延伸到图表底部的垂直线。
我已经在 onDraw 方法中创建了这条线,如下所示:
mDrawable = new ShapeDrawable(new RectShape());
mDrawable.getPaint().setColor(0xFF363636);
mDrawable.setBounds((int)markerX,(int) (markerY) , (int)markerX+1, (int) height);
mDrawable.draw(canvas);
我正在使用以下代码以及计算标记位置的代码来刷新 onTouch 方法中的行。
invalidate(mDrawable.getBounds());
我的问题发生在可绘制对象被移动时。如果手势足够快,刷新往往会有延迟,并且线条会在图形上消失(几分之一秒)。这条线与运动保持一致,但它消失了。如果这有什么意义的话,似乎项目的移动速度快于它的边界。
我听说使整个画布无效是不行的,最好使您想要更改的范围无效(我在上面所做的)。使整个画布无效时,不会出现消失线现象,但应用程序运行缓慢。
我对 SurfaceView 和表面支架做了一些神奇的事情,但在这种情况下使用它们似乎适得其反。据我了解,我基本上会使用 invalidate() 方法,但在不同的线程中。一切仍然会一遍又一遍地重绘,这似乎适得其反。
是否有另一种方法来实现 GraphView 库中描述的效果?