我正在使用GraphView API,並且實現了圖表難以處理。當用戶觸摸圖形時,會出現一條垂直線,從數據點延伸到圖形底部。使用下面的代碼,與代碼一起計算標記位置,來刷新onTouch方法線使用invalidate實現交互式畫布時引起的延遲(Rect dirtyRect)
mDrawable = new ShapeDrawable(new RectShape());
mDrawable.getPaint().setColor(0xFF363636);
mDrawable.setBounds((int)markerX,(int) (markerY) , (int)markerX+1, (int) height);
mDrawable.draw(canvas);
蔭:
伊夫創建在的onDraw方法線像這樣。
invalidate(mDrawable.getBounds());
我的問題發生在drawable被移動時。如果手勢速度足夠快,刷新過程中會出現延遲,並且線條會在圖上消失(幾分之一秒)。該線與運動保持一致,但消失。看起來就像物品移動得越快越好,如果這是有道理的話。
我聽到使整個畫布無效是一個禁忌,並且使你想要改變的邊界無效(我在上面做過的)。當使整個畫布無效時,消失線現象不會發生,但應用程序運行緩慢。
我已經用SurfaceView和表面支架完成了一些神奇的事情,但在這種情況下使用它們似乎反作用。從我的理解,我基本上會使用invalidate()方法,但在不同的線程。所有東西都會一遍又一遍地重新渲染,這似乎是反效果的。
是否有另一種方法可以完成GraphView庫中描述的效果?