2012-03-22 149 views
0

我有應用程序組成的RelativeLayout,TableLayout和一些按鈕。現在我想在用戶在屏幕上按下的點上繪製一個圓圈。一種方法是擴展視圖並添加所有功能,但我想知道是否有更優雅的(通用)解決方案?透明視圖覆蓋用於繪圖

我一直在想透明覆蓋層,它添加到佈局中,它捕獲MotionEvent,在觸摸點上繪製圓並將事件傳遞給底層View組件(因此按鈕仍然可點擊)。

這種方式的解決方案更具可重用性,因爲您可以輕鬆將其插入任何項目中,但不幸的是,我不知道它是否可行。任何提示?

回答

1
+0

我看了一下GestureOverlayView,然後創建了我自己的類來擴展View。這是importand重寫dispatchDraw,首先繪製孩子,然後覆蓋,否則在大多數情況下你會被孩子忽悠。 – Andraz 2012-04-06 10:24:28

0

我不知道如果我的建議是最好的解決辦法,但我會做到以下幾點: 創建一個擴展Drawable的新類。
重寫onDraw方法並在畫布上繪製圓。 添加一個。 addCircle(int x,int y);方法添加到可繪製的類中,每次要添加圓時您都會調用它。

然後在你的活動中創建一個上述類的新對象,並將它設置爲context.getWindow()。setBackgroundDrawable(你的對象)作爲你的WindowBackground。然後,在您處理您的motionevent調用時,將會添加此對象.addCircle方法和您的圓圈。

像這樣在你的活動將只有幾行代碼,它將是可重用的。