2017-02-14 5 views
-1

Я разрабатываю приложение для Android с функцией перетаскивания. В моем приложении есть имя кнопки buttonOne. Некоторое время я хочу нажать кнопку, и некоторое время я хочу перетащить кнопку. Итак, я использую setOnTouchListener. Когда я перетаскиваю или дважды щелкаю (или прикосновением), число щелчков кнопки показывает больше, чем раз. Например, когда я перетаскиваю кнопку, я хочу показать счетчик. Но это показывает больше одного. Некоторое время это происходит при нажатии на мой код, показанный ниже.Android on set touch listener показывает multi touch

imageButtonOne.setOnTouchListener(new OnTouchListener() {@Override public boolean onTouch(View v, MotionEvent event) { 
//clicked =1; 
ClipData data = ClipData.newPlainText("", ""); 
View.DragShadowBuilder shadow = new View.DragShadowBuilder(imageButtonOne); 
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
    v.startDragAndDrop(data, shadow, v, 0); 
} else { 
    v.startDrag(data, shadow, v, 0); 
} 
Log.d("LOGTAG", "Touched"); 
if(SystemClock.elapsedRealtime() - c < 1000) { // SystemClock is shows system time. 

    setPosition(position); 
} 
c=SystemClock.elapsedRealtime(); 
switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
    startX = event.getX(); 
    startY = event.getY(); 
    break; 
    case MotionEvent.ACTION_UP: 
    float endX = event.getX(); 
    float endY = event.getY(); 
    if (isAClick(startX, endX, startY, endY)) { 
     Log.d("LockView", "clicked"); 
    } else {} 
    break; 
} 
v.getParent().requestDisallowInterceptTouchEvent(true); //specific to my project 
return false; 
} 
}); 

Здесь SystemClock.elapsedRealtime() это показывает, что система используется для предотвращения многократного отклика сенсорного.

Но не получить правильного результата, как его решить? Пожалуйста, помогите мне?

+0

Что вы пробовали. Я думаю, используя setonClickListener –

+0

Я хочу использовать перетаскивание. Таким образом, setonClickListener не полезен. – Fazil

+0

в пользовательском интерфейсе вы используете кнопку перетаскивания вправо/ –

ответ

0

Я получил ответ. Это связано с проблемой SystemClock.elapsedRealtime() - c. Я меняю c < 1000 на c > 10.

Теперь проблема решена.