Menggunakan onTouchEvent() untuk mengesan gerak isyarat ialah amalan biasa dalam pembangunan Android. Walau bagaimanapun, pelaksanaan lalai tidak termasuk cara mudah untuk mengendalikan tekanan lama. Soalan ini meneroka strategi untuk mengesan tekanan lama menggunakan onTouchEvent().
Respons mencadangkan dua kaedah untuk mencapai ini:
GestureDetector ialah kelas Android yang berkuasa direka khusus untuk pengesanan gerak isyarat. Ia menyediakan antara muka yang mudah digunakan untuk mengecam gerak isyarat biasa, termasuk menekan lama.
Untuk melaksanakan pengesanan tekan lama dengan GestureDetector, kod di bawah mengatasi kaedah onTouchEvent() dan mendaftarkan contoh GestureDetector:
<code class="java">@Override public boolean onTouchEvent(MotionEvent event) { // Register and check for long presses GestureDetector gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { @Override public boolean onLongPress(MotionEvent e) { // Perform long press action return true; } }); gestureDetector.onTouchEvent(event); return super.onTouchEvent(event); }</code>
Jika GestureDetector tidak boleh dilaksanakan, pendekatan alternatif melibatkan mendaftarkan acara ACTION_DOWN dan menggunakan Boleh Lari untuk menyemak masa berlalu sebelum peristiwa ACTION_UP atau ACTION_MOVE berlaku. Jika masa berlalu kurang daripada tempoh tekan lama yang dipratentukan, tekan lama dikesan.
Kod di bawah menunjukkan pendekatan ini:
<code class="java">final Handler handler = new Handler(); Runnable mLongPressed = new Runnable() { public void run() { Log.i("", "Long press!"); } }; @Override public boolean onTouchEvent(MotionEvent event, MapView mapView){ if(event.getAction() == MotionEvent.ACTION_DOWN) handler.postDelayed(mLongPressed, ViewConfiguration.getLongPressTimeout()); if((event.getAction() == MotionEvent.ACTION_MOVE)||(event.getAction() == MotionEvent.ACTION_UP)) handler.removeCallbacks(mLongPressed); return super.onTouchEvent(event, mapView); }</code>
Dengan menggunakan salah satu kaedah ini, pembangun boleh berkesan mengesan tekanan lama dalam aplikasi Android mereka menggunakan kaedah onTouchEvent().
Atas ialah kandungan terperinci Bagaimana untuk Mengesan Tekan Lama dengan onTouchEvent() dalam Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!