※ 引述《lovelycateye (我還想要更多力量)》之銘言:
: 可以參考看看
: http://stackoverflow.com/questions/7778279/android-creating-shaped-button
: 如果是我做的話,跟上面連結會滿類似的
: 我會做成每個圖片按鈕是一個 View
: 1.在 onTouch ACTION_DOWN 的地方判斷這個點的 pixel 的 alpha channel 是否為透明。
: 如果不是透明 return true,不繼續往下個 View 判斷。
^^^^^^^^^^^能否請教這裡的關鍵字,因為監聽return false後
似乎只有往上一層的layout傳遞,不知如何傳遞給同層的View
: 2.偵測是否有移動的距離,有移動超過某個距離視為拖移,而非 Click。
: 3.接著在 onTouch ACTION_UP 的地方,看起來的點和時間,是否為限制的位置和時間內
: 若不是也不當做是 Click。
: 4.如果通過以上判斷是 Click 則觸發 performClick();
: 至於外面的 layout 一點也不重要,你必須要讓你的按鈕可以獨立運作才對。
我照著把那層layout拿掉算是做出來了,沒被View覆蓋的View也判斷orz
而且其他地方變得蠻不好寫的,方法如下:
public boolean onTouch(View v, MotionEvent event) {
boolean isTransparent, isOutOfRange;
...... //我取event.getRawX()和getRawY()來判斷
if (isTransparent || isOutOfRange) {
ViewGroup vg = (ViewGroup)v.getParent();
int index = vg.indexOfChild(v);
if (index > 0)
this.onTouch(vg.getChildAt(index-1), event);
}
return true;
}
終於解決了很開心,謝謝大家!