Re: [問題] 不規則元件的點擊

作者: lovelycateye (我還想要更多力量)   2015-11-17 14:23:18
※ 引述《loser0120 (失敗者)》之銘言:
: 我自創RelativeLayout的子類別,內有多個ImageView是各種不規則圖片
: public class Myrlyt extends RelativeLayout {
: public ImageView iv1, iv2;
: .....
: }
: 在Activity中實體化了多個Myrlyt類別,裡面的ImageView都設了監聽
: public class Main extends Activity {
: private RelativeLayout rlyt_main;
: private Myrlyt rlyt1, rlyt2;
:
: protected void setupViewComponent() {
: rlyt1.iv1.setOnTouchListener(touchListener);
: rlyt1.iv2.setOnTouchListener(touchListener);
: rlyt_main.addView(rlyt1);
: rlyt2.iv1.setOnTouchListener(touchListener);
: rlyt2.iv2.setOnTouchListener(touchListener);
: rlyt_main.addView(rlyt2);
: }
: ....
: }
: 想請教的是如何在rlyt1和rlyt2重疊時正確判定使用者點擊了哪張圖片
: 如下圖,rlyt2藍色,rlyt1紅色,當點擊重疊處就無法正確判定是rlyt1的ImageView
: ▁▁▁
: ▕ ●▕
: ▕ ▂▁▁▁
: ▕▅▕ ▲▏
: ▕▄▂█▏
: ▕ ∩█▏
: 目前嘗試先判斷是不是點擊到rlyt2的ImageView圖片透明處,
: 我希望可以繼續判斷此點擊在rlyt1是不是透明,這裡實在不知道怎麼寫
: 無論如何謝謝你看到最後
可以參考看看
http://stackoverflow.com/questions/7778279/android-creating-shaped-button
如果是我做的話,跟上面連結會滿類似的
我會做成每個圖片按鈕是一個 View
1.在 onTouch ACTION_DOWN 的地方判斷這個點的 pixel 的 alpha channel 是否為透明。
如果不是透明 return true,不繼續往下個 View 判斷。
2.偵測是否有移動的距離,有移動超過某個距離視為拖移,而非 Click。
3.接著在 onTouch ACTION_UP 的地方,看起來的點和時間,是否為限制的位置和時間內
若不是也不當做是 Click。
4.如果通過以上判斷是 Click 則觸發 performClick();
至於外面的 layout 一點也不重要,你必須要讓你的按鈕可以獨立運作才對。

Links booklink

Contact Us: admin [ a t ] ucptt.com