1

我想檢查該視圖(無論哪個,在我的情況下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); 

但我有在未觸及屏幕呢? :-)

+0

在ImageView沒有被觸摸一段時間後,你想隱藏ActionBar嗎? –

+0

爲什麼不在應用程序啓動時將其隱藏起來,然後當用戶觸摸屏幕打開它時,經過一段時間(也許500毫秒)後再次隱藏它。我認爲你應該找到一種觸摸方式。 – alicanbatur

+0

@FD_是的,我想要 – Nicramus

回答

1

添加標記到你的活動:

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; 
} 

這至少應該給你如何做到這一點的想法。

+0

終於,我用你的解決方案 – Nicramus

2

創建一個額外的布爾值(例如: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 
    } 
} 
+0

謝謝!簡單快速 – Nicramus

相關問題