Я хотел бы показать диалог (секретное меню), когда пользователь ударяет 5 раз в любом месте активности. Это возможно? Я не смог этого добиться, а также не нашел ничего в документации.Получение события касания, когда пользователь удаляет ровно 5 раз
ответ
попробуйте этот код: перезаписать метод onTouchEvent(MotionEvent event)
в вашей деятельности и подсчитать количество нажатий ..
public class MainActivity extends Activity {
private int count = 0;
//detect any touch event in the screen
@Override
public boolean onTouchEvent(MotionEvent event) {
int eventaction = event.getAction();
if (eventaction == MotionEvent.ACTION_UP) {
//get system current milliseconds
long time= System.currentTimeMillis();
++count;
if (count==5) {
//show Dialog
new AlertDialog.Builder(MainActivity.this)
.setTitle("Your Alert")
.setMessage("Your Message")
.setCancelable(false)
.setPositiveButton("ok", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Whatever...
}
}).show();
}
return true;
}
return false;
}
}
Первых глобальной переменным инициализировать mCounter который следить за сколько времени вы щелкнули деятельность.
int mCounter = 0;
вы можете переопределить onTouchEvent метод, как показано ниже в деятельности
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// increase counter here
counter = counter + 1;
if(counter == 5) {
// show dialog here
}
break;
}
return true;
}
}
Надежда это поможет вам.
Это довольно легко. Код будет идти, как это:
public class MainActivity extends Activity {
private int count = 0;
public boolean onTouchEvent(MotionEvent event) {
int eventaction = event.getAction();
if (eventaction == MotionEvent.ACTION_UP) {
count++;
}
else{
break;
}
if (count==5) {
//do whatever you need
Toast.makeText(getActivity(), "You tapped 5 times on screen",
Toast.LENGTH_LONG).show();
}
return true;
}
return false;
}
Для информации
Да, вы можете переопределить onTouchEvent(MotionEvent event)
Но
пользователя получить секретный меню всякий раз, когда он завершить 5 касаний.
Но для реального Тайной меню, когда-либо пользователь прикасается 5 раз Быстро диалог показывает вверх.
Для этого
public class MainActivity extends Activity {
private final int count = 0;
Handler handler;
Runnable runnable;
@Override
public boolean onTouchEvent(MotionEvent event) {
int eventaction = event.getAction();
if (eventaction == MotionEvent.ACTION_UP) {
count++;
if (count > 0) {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
count = 0;
}
};
handler.postDelayed(runnable, 1000); // clear counter if user does not touch for one sec
}
if (count == 5) {
//do whatever
}
return true;
}
return false;
}
}
Если пользователь не прикасается на мгновение сделать счетчик на 0.
Будьте осторожны, чтобы импортировать правильный обработчику
import android.os.Handler;
Проверьте мой ответ тоже, это то, что вы хотите ??? –