簡體   English   中英

如何檢測未觸摸/單擊視圖?

[英]How to detect that View is NOT touched/clicked?

我想檢查那個視圖(無論是哪種,在我的情況下是ImageView)都沒有被用戶觸摸/點擊,我想不斷地做。 我認為我應該使用某種線程,但我不知道如何開始。 我想要做的操作是隱藏ActionBar,當沒有動作時我想隱藏它。
觸摸視圖時,我使用以下代碼:

   Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {

            //if (registerImageViewCallback(slidesPagerAdapter);
            gestureImageView = slidesPagerAdapter.getGestureImageView();
            gestureImageView.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    getSupportActionBar().show();
                    return false;
                }
            });
        }
    }, 10);

但是,當屏幕未觸及時我必須做什么? :-)

創建一個額外的布爾值(例如:notTouched)為true,然后在onTouch覆蓋中將其設置為false,然后在任何時候你都可以檢查布爾值是true還是false。

編輯:如果你希望它在一段時間沒有被觸摸后隱藏它(如你所說)你可以在一個單獨的線程上的循環中實現一個額外的計數器整數,如下所示:

while(true) {
     if (notTouched) {
         counter++
         if(counter == 20) {  // Assuming 20 seconds have passed of not touching
             hideMethodHere(); // Execute hiding
         }
         Thread.sleep(1000); // Sleep for a second (so we dont have to count in miliseconds)
     } else {
     counter = 0; // If it was touched, reset the counter
     notTouched == true; // Reset the touch flag as well because otherwise it will be visible forever if you touch it
     }
}

在您的活動中添加一個標志:

boolean wasTouched = true;

添加一個計時器,檢查視圖是否被觸摸:

Timer t = new Timer();
t.scheduleAtFixedRate(new TimerTask() {
   @Override
   public void run() {
      if ( wasTouched == false ) {
         runOnUiThread(new Runnable() {
             public void run(){
               hideYourActionBar();
             }      
          });
      } else {
        wasTouched = false;
      }
   }    
 }, 0, YourDelayInMsHere);

在onTouchListener中,將wasTouched設置為true:

public boolean onTouch(View v, MotionEvent event) {
   wasTouched = true;
}

這至少應該讓你知道如何做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM