Прослушиватель Android OnTouch не работает, когда приложение находится в режиме выпуска - PullRequest
0 голосов
/ 17 мая 2018

В одном из моих действий у меня есть ImageView, который я установил на него на TouchListener, чтобы переместить его на экран, проблема в том, что когда я тестирую его в режиме отладки, все работает нормально, и я вижу, что ImageView двигаясь по экрану, и я также могу нажать на это. Но когда я создаю подписанный APK для режима выпуска и тестирую его на том же устройстве, он не отвечает!

представление изображения находится внутри RelativeLayout и настроено как:

 <ImageView
    android:id="@+id/imageView"
    android:layout_width="90dp"
    android:layout_height="90dp"
    android:layout_centerInParent="true"
    android:src="@drawable/app_launcher"
    android:clickable="true"
 />

и код для этого: (этот код находится в методе onCreate)

imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if (gestureDetector.onTouchEvent(event))
            {
                Toast.makeTest(MainActivity.this, 
                                  "imageView clicked!",Toast.LENGTH_LONG).show();
                return true;
            } else {
                switch (event.getActionMasked()) {
                    case MotionEvent.ACTION_DOWN:
                        initPosX= v.getX();
                        initPosY= v.getY();

                        initTouchX= event.getRawX();
                        initTouchY= event.getRawY();

                        lastAction= event.getAction();

                        return true;

                    case MotionEvent.ACTION_MOVE:
                        v.setX(initPosX+ (int)(event.getRawX() - initTouchX));
                        v.setY(initPosY+ (int)(event.getRawY() - initTouchY));

                        lastAction= event.getAction();
                        return true;

                    case MotionEvent.ACTION_UP:
                        v.setVisibility(View.VISIBLE);
                        lastAction= event.getAction();
                        return true;
                }
            }
            return true;

        }
    });

У меня также есть GestureDetectorListener для обнаружения singleTap:

private class GestureListener extends GestureDetector.SimpleOnGestureListener{
    @Override
    public boolean onSingleTapUp(MotionEvent e) {
        return true;
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        return true;
    }
}

1 Ответ

0 голосов
/ 17 мая 2018

Объявление класса жестов при создании:

final GestureDetector mGesDetect = new GestureDetector(this, new GestureListener());

После этого положить изображение Touch Listner, как показано ниже:

 imageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            mGesDetect.onTouchEvent(event);
            return true;
        }
    });


   private class GestureListener extends GestureDetector.SimpleOnGestureListener{
       @Override
        public boolean onSingleTapUp(MotionEvent e) {
           return true;
        }

       @Override
       public boolean onSingleTapConfirmed(MotionEvent e) {
         return true;
       } 
   }
...