android - टच ईवेंट्स द्वारा लंबे समय तक सिमुलेट करें




event-handling touch-event (3)

हम कैसे स्पर्श घटना द्वारा लंबे समय से प्रेस अनुकरण कर सकते हैं? या हम स्क्रीन के दौरान उस समय की गणना कैसे कर सकते हैं, जो सभी ACTION_DOWN स्थिति में हैं?


आपको ACTION_DOWN और ACTION_UP ईवेंट के बीच का समय गिनना होगा इस समय केवल ACTOIN_DOWN राज्य में गणना करना असंभव है, क्योंकि यह लंबे समय तक टैप ईवेंट के टीएपी का प्रतिनिधित्व करने वाली घटनाओं के क्रम की START घटना है


मैंने अंत में एक टच स्क्रीन पर क्लिक किया है, सभी thx:

textView.setOnTouchListener(new View.OnTouchListener() {

    private static final int MIN_CLICK_DURATION = 1000;
    private long startClickTime;

    @Override
    public boolean onTouch(View v, MotionEvent event) {

        switch (event.getAction()) {
        case MotionEvent.ACTION_UP:
            longClickActive = false;
            break;
        case MotionEvent.ACTION_DOWN:
            if (longClickActive == false) {
                longClickActive = true;
                startClickTime = Calendar.getInstance().getTimeInMillis();
            }
            break;
        case MotionEvent.ACTION_MOVE:
            if (longClickActive == true) {
                long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
                if (clickDuration >= MIN_CLICK_DURATION) {
                    Toast.makeText(MainActivity.this, "LONG PRESSED!",Toast.LENGTH_SHORT).show();
                    longClickActive = false;
                }
            }
            break;
        }
        return true;
    }
});

जिसमें private boolean longClickActive = false; एक क्लास चर है


इसे इस्तेमाल करे। आपको इसके लिए हैक खोजने की आवश्यकता नहीं है।

final GestureDetector gestureDetector = new GestureDetector(new GestureDetector.SimpleOnGestureListener() {
 public void onLongPress(MotionEvent e) {
  Log.e("", "Longpress detected");
 }
});

public boolean onTouchEvent(MotionEvent event) {
 if (gestureDetector.onTouchEvent(event)) {
  return true;
 }
 switch (event.getAction()) {
  case MotionEvent.ACTION_UP:
   break;
  case MotionEvent.ACTION_DOWN:
   break;
  case MotionEvent.ACTION_MOVE:
   break;
 }
 return true;
}
};




long-press