Что мне нужно для достижения здесь: 1) наложить трансверентную «точку» на изображение PNG; где пользователь нажал. 2) наложите трансверент «Большой круг», когда пользователь долго держит контакт. 3) после нажатия кнопки «Очистить экран»Обнаружение DoubleTap на компоненте Android «View»
В первую очередь я использую «onTouchEvent» для обнаружения кликов-событий ... и «geastureDetector» для обнаружения DoubleTap ... но не получения желаемого результата.
Эти 2 реализаций я пробуя
Этот первый подход отлично работает ... Но событие щелчка генерируется с некоторым отклонением ... Я хочу сказать, событие щелчка захвачена всегда компенсируется вокруг 50 пикселей в Y направлении .... Я не могу понять, почему это должно произойти ..
class Tileview extends Activity implements GestureDetector.OnGestureListener,GestureDetector.OnDoubleTapListener {
onCreate(){
//add the View Thing here.
}
@Override
public void onLongPress(MotionEvent e) {
// "longPress Detected"
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// "longPress Detected"
}
@Override
public boolean onTouchEvent(MotionEvent event) {
final int action = event.getActionMasked();
switch(action){
case MotionEvent.ACTION_DOWN:
mClickX = event.getX();
mClickY = event.getY();
}
myTileView.invalidate();
return mGestureDetector.onTouchEvent(event);
}
private class MyTileView extends View{
protected void onDraw(Canvas canvas){
// Canvas & Paint stuff - for translucent cicle
c.drawCircle(mClickX, mClickY, 75.0f, p);
}
}
другой подход может накладываться изображение propely в нужном месте; но когда я добавляю реализацию DoubleTap в «View» вместо Activity .., то doubleTap/geastureListeners никогда бы не срабатывали .... Только изменение, которое я сделал в этом случае, заключалось в том, чтобы получить реализацию onTouchEvent() - и corrsponding в представлении "класс ....
class TileActivity extends Activity {
OnCreate()
{
// Bla Bla Bla
}
private class TileView extends View implements OnDoubleTapListener, OnGestureListener{
@override
onTouchEvent(){
// get co-ordinates here from MotionEvent
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// THIS WON'T EVEN GET FIRED
// In this case the doubleTap detection is not working
clearEntireScreen = true;
return false;
}
}
}
Просьба отметить это как ответ на ваш вопрос – Niels