Перекрывающиеся представления на событиях Touch - PullRequest
0 голосов
/ 31 октября 2018

enter image description here

Я пытаюсь сделать страницу соответствия экрана, как Tinder, используя библиотеку SwipeCards. У меня есть ViewPager в адаптер карты. И я хочу показать следующую фотографию пользователя, когда невидимый вид нажал. За это; Я реализовал GestureListener для невидимого просмотра, и обнаруженное событие касания - свайп или одно касание. Если событие проведено; тогда SwipeCard onTouch должен сработать. Но эта логика не работает, я не могу включить состояние Touch и не могу понять, как это решить.

Это мой CustomGestureListener:

public abstract class CustomGestureListener extends GestureDetector.SimpleOnGestureListener {

private final View mView;

public CustomGestureListener(View view){
    mView = view;
}

@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
    mView.onTouchEvent(e);
    return super.onSingleTapConfirmed(e);
}

@Override
public boolean onSingleTapUp(MotionEvent e) {
    onTouch();
    return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
    if (e1.getX() < e2.getX()) {
        return onSwipeRight();
    }

    if (e1.getX() > e2.getX()) {
        return onSwipeLeft();
    }

    return onTouch();
}

public abstract boolean onSwipeRight();
public abstract boolean onSwipeLeft();
public abstract boolean onTouch();
}

Я использую этот слушатель в своем фрагменте так:

 mGestureDetector = new GestureDetector(getActivity(), new CustomGestureListener(viewRightNavigation) {
        @Override
        public boolean onSwipeRight() {
            //
            return false;
        }

        @Override
        public boolean onSwipeLeft() {
            //
            return true;

        }

        @Override
        public boolean onTouch() {
            return false;
        }
    });

    viewRightNavigation.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            return !mGestureDetector.onTouchEvent(event);
        }
    });
    viewRightNavigation.setGestureDetector(mGestureDetector);

А это мой xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:id="@+id/relativeLayoutMatchScreenContainer"
android:layout_height="match_parent"
android:orientation="vertical"
tools:mContext="com.genesissoft.musictwin.fragment.MatchScreenFragment">

<com.lorentzos.flingswipe.SwipeFlingAdapterView
    android:id="@+id/swipteFlingAdapterViewFrame"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_centerInParent="true"
    android:background="#ffeee9e2"
    android:baselineAligned="false"
    app:rotation_degrees="15.5"
    tools:mContext=".MyActivity" >

</com.lorentzos.flingswipe.SwipeFlingAdapterView>

<com.genesissoft.musictwin.view.SwipeableLinearLayout
    android:id="@+id/viewRightNavigation"
    android:layout_centerInParent="true"
    android:orientation="vertical"
    android:layout_alignParentRight="true"
    android:layout_width="200dp"
    android:layout_height="300dp"/>

...