3
嗨!我有一個水平滾動視圖內的surfaceView,我想用onDraw()調用填充圖像。但是,沒有任何東西。 我有一個類,其中繪製是從線程CanvasThread完成的。OnDraw()沒有被觸發,沒有任何東西在SurfaceView中繪製 - Android
public class PanelChart extends SurfaceView implements SurfaceHolder.Callback {
private CanvasThread canvasthread ;
public PanelChart(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
getHolder().addCallback(this);
canvasthread = new CanvasThread(getHolder(), this);
setFocusable(true);
我試圖改變
`synchronized (_surfaceHolder) {
_panel.postInvalidate();
}`
到 synchronized (_surfaceHolder) { _panel.postInvalidate(); }
我也試過沒有運氣添加通話setWillNotDraw(假):
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
canvasthread.setRunning(true);
canvasthread.start();
setWillNotDraw(false);
這似乎是一個共同的問題,但我沒有提出任何解決方案橫跨爲我工作。
謝謝!
謝謝,但這也行不通。你的意思是關鍵是啓動線程,它調用OnDraw,然後睡覺線程,然後解鎖它?所以問題應該在線程中? – kakka47 2011-06-03 04:56:58
是的,當你需要動畫時啓動線程。我不確定這是否可以在滾動視圖中工作,但是當SurfaceView是唯一的視圖時,它可以很好地工作。當您滾動ScrollView時,它會重新繪製其視圖,這可能會干擾SurfaceView繪圖...因此您需要進行試驗。 – Lumis 2011-06-03 11:42:15
你說得對,這是我放置了內部表面視圖的水平滾動視圖,正在與我混淆。謝謝盧米斯! – kakka47 2011-06-03 22:18:21