1. 程式人生 > >Android對螢幕空白區域的監聽方法:

Android對螢幕空白區域的監聽方法:

  @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        if(ev.getAction()==MotionEvent.ACTION_DOWN){
            View view = getCurrentFocus();
            if(view!=iv1){
                iv1.setVisibility(View.INVISIBLE);
            }
        }

        return super.dispatchTouchEvent(ev);
    }


當點選圖片以外的地方圖片會自動隱藏;實現對圖片以外的地方的監聽!!!!!

注意:當返回值為TRUE時,直接中斷了事件向下傳遞的過程,無論點選螢幕哪兒,都會執行方法裡的類容!!!!

實測上面的方法不管用,getCurrentFocus();返回的空間都是空的,下面進行第二種方式:

 @Override
    public boolean onTouchEvent(MotionEvent event) {

            View view = getCurrentFocus();
        Log.i("tAG==================",(view==null)+"");
                iv1.setVisibility(View.INVISIBLE);
                return true;
    }

activity中所有的控制元件只要沒有設定clickable屬性的都不會呼叫onTouchEvent()方法,然後事件被一層層返回,最後當然事件被系統消費了,一樣會走onTouchEvent()。

那麼,設定了clickable屬性的會怎麼樣呢,我們知道button類的控制元件天生就是大娘生的,自帶clickable屬性。當activity中有這些控制元件時,點選它們時onTouchEvent()方法不會被呼叫,當然他就會走onclick或onLongClick的監聽事件了。這樣我們想要的效果就有了!

當點選螢幕的空白區域時,重寫onTouchEvent(),返回true,強制消費!當點選某個控制元件時,設定clickable屬性,再來個監聽事件,OK!

很疑惑的一點:

view的onClick方法是在ACTION_UP之後執行,記住一點就可以了那就是如果onTouch方法返回true,說明View這次消費了這次事件,所以就不會再執行後續的onClick方法了,