Реализация смахивания вправо в Android деятельности - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь реализовать жест «Проведите пальцем вправо» в своей активности Android. Я использую класс GestureDetector, как указано в официальной документации Google, но кажется, что команды не распознаются. Это мой код:

public class DetailActivity extends AppCompatActivity implements GestureDetector.OnGestureListener,
GestureDetector.OnDoubleTapListener {
    public static String EXTRA_ID = "extra_id";
    public static String EXTRA_TITLE = "extra_title";

    private int currentApiVersion;
    private GestureDetectorCompat mDetector;
    private final int SWIPE_MIN_DISTANCE = 120;
    private final int SWIPE_THRESHOLD_VELOCITY = 200;


    @BindView(R.id.movieTitle) TextView tvTitle;

    Context context;

    @Override
    public void onBackPressed() {

        super.onBackPressed();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail_activity);
        mDetector = new GestureDetectorCompat(this,this);
        mDetector.setOnDoubleTapListener(this);
    }


    @Override
    public boolean onTouchEvent(MotionEvent event){
        if (this.mDetector.onTouchEvent(event)) {
            return true;
        }
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onDown(MotionEvent event) {
        return true;
    }

    @Override
    public boolean onFling(MotionEvent event1, MotionEvent event2,
       float velocityX, float velocityY) {
        if ((int)event2.getX() - (int)event1.getX() > SWIPE_MIN_DISTANCE &&     Math.abs(velocityX) >  SWIPE_THRESHOLD_VELOCITY) {
            onBackPressed();
            return true;
        }
        return true;
    }

    @Override
    public void onLongPress(MotionEvent event) {
    }

    @Override
    public boolean onScroll(MotionEvent event1, MotionEvent event2, float distanceX,
        float distanceY) {
        return true;
    }

    @Override
    public void onShowPress(MotionEvent event) {
    }

    @Override
    public boolean onSingleTapUp(MotionEvent event) {
        return true;
    }

    @Override
    public boolean onDoubleTap(MotionEvent event) {
        return true;
    }

    @Override
    public boolean onDoubleTapEvent(MotionEvent event) {
        return true;
    }

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

Это действительно просто, я хотел бы, чтобы при жесте смахивания вызывался метод OnBackPressed, чтобы я мог смоделировать, что будет делать метод при возврате с кнопкой панель навигации. В Logcat отображаются только сообщения указатель ViewPostIme 0 и указатель ViewPostIme 1 .

...