Détecter le mouvement de balayage du fragment
Salut j'ai mis en place un Fragment
, et je veux détecter le toucher de l'événement sur mon fragment.
Mais je suis incapable de détecter cet événement, comme une question de fait, aucun événement n'est beign détectées. Il fonctionne bien dans Activity
, mais il ne fonctionne pas sur des fragments.
Voici mon code:
public class Swipe_Fragment extends Fragment implements
GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener {
private SimpleGestureFilter detector;
private LinearLayout swipLinear;
private static int DEFAULT = 50;
private int brightness;
private GestureDetectorCompat mDetector;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.swipe_screen, container,
false);
swipLinear = (LinearLayout) rootView.findViewById(R.id.swipLinear);
brightness = DEFAULT;
mDetector = new GestureDetectorCompat(getActivity(), this);
//Set the gesture detector as the double tap
//listener.
mDetector.setOnDoubleTapListener(this);
//Detect touched area
//detector = new SimpleGestureFilter(getActivity(), this);
return rootView;
}
@Override
public boolean onDoubleTap(MotionEvent arg0) {
Toast.makeText(getActivity(), "onDoubleTap", Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
Toast.makeText(getActivity(), "onDoubleTapEvent", Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
Toast.makeText(getActivity(), "onSingleTapConfirmed", Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onDown(MotionEvent e) {
Toast.makeText(getActivity(), "onDown", Toast.LENGTH_LONG).show();
return false;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Toast.makeText(getActivity(), "onFling", Toast.LENGTH_LONG).show();
return false;
}
@Override
public void onLongPress(MotionEvent e) {
Toast.makeText(getActivity(), "onLongPress", Toast.LENGTH_LONG).show();
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
Toast.makeText(getActivity(), "onScroll", Toast.LENGTH_LONG).show();
return false;
}
@Override
public void onShowPress(MotionEvent e) {
Toast.makeText(getActivity(), "onShowPress", Toast.LENGTH_LONG).show();
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
Toast.makeText(getActivity(), "onSingleTapUp", Toast.LENGTH_LONG).show();
return false;
}
}
OriginalL'auteur Siddhpura Amit | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
J'ai finalement trouvé une solution depuis le code ci-dessous, qui est de Android Fragment onCreateView avec des Gestes.
Ceci va dans le
onCreateView()
méthode du fragment.En effet, il devrait y aller @jos. J'ai essayé cette solution là, et cela a fonctionné!
que faire si nous voulons swip en haut et en bas ??
Vous aurez à calculer si c'est un haut ou en bas de la jeter dans le onFling méthode. Je dirais principalement à l'aide de la velocityY valeur pour ce faire. Je vous suggère aussi de l'ignorer si velocityY est très faible ou si velocityX est également importante, car cela va omettre horizontale et diagonale de glisse, respectivement.
OriginalL'auteur Siddhpura Amit