Make Swap Vertical And Horizontal Work With Two Adapters
So basically I'm trying to make my app like snapchat where you can swipe left,right,up and down. My problem is that the app does not realize there are two adapters and only works o
Solution 1:
Getting the base from here.
Create a GestureDetectorCompat object
GestureDetectorCompat gestureDetectorCompat;
and override onTouchEvent in the activity
@OverridepublicbooleanonTouchEvent(MotionEvent event) {
gestureDetectorCompat.onTouchEvent(event);
returntrue;
}
or if you want to detect on some view then you can Override onTouch
someView.setOnTouchListener(newView.OnTouchListener() {
@OverridepublicbooleanonTouch(View view, MotionEvent motionEvent) {
gestureDetectorCompat.onTouchEvent(motionEvent);
returnfalse;
}
});
and initialize gestureDetectorCompat as follows somewhere preferably in onCreate() and you are done.
gestureDetectorCompat = newGestureDetectorCompat(this, newGestureDetector.SimpleOnGestureListener() {
@OverridepublicbooleanonScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
floatangle= (float) Math.toDegrees(Math.atan2(e1.getY() - e2.getY(), e2.getX() - e1.getX()));
if (angle > -45 && angle <= 45) {
if(goRight != 5) mainContainer.setCurrentItem(goRight);
returntrue;
}
if (angle >= 135 && angle < 180 || angle < -135 && angle > -180) {
if(goLeft != 5) mainContainer.setCurrentItem(goLeft);
returntrue;
}
if (angle < -45 && angle >= -135) {
if(goUp != 5)mainContainer.setCurrentItem(goUp);
returntrue;
}
if (angle > 45 && angle <= 135) {
if(goDown != 5)mainContainer.setCurrentItem(goDown);
returntrue;
}
returnfalse;
}
});
Then you can use mainContainer.setCurrentItem(number);
to go to other position/fragment.
Don't forget that the number change if you are in different number. Like this
switch(adapter.getCurrentItem()){
case0:
goRight = 2;
goLeft = 4;
goUp = 3;
goDown = 1;
break;
case1:
goRight = 5;
goLeft = 5;
goUp = 0;
goDown = 5;
break;
case2:
goRight = 5;
goLeft = 0;
goUp = 5;
goDown = 5;
break;
case3:
goRight = 5;
goLeft = 5;
goUp = 5;
goDown = 0;
break;
case4:
goRight = 0;
goLeft = 5;
goUp = 5;
goDown = 5;
break;
}
When you are in the fragment 4 you can only go to 0, not 2 if you swipe left-right.
And this should be your adapter
publicclassSwipeViewPagerextendsFragmentPagerAdapter {
publicSwipeViewPager(FragmentManager fm) {
super(fm);
}
@Overridepublic Fragment getItem(int position) {
switch (position){
case0:
return EmptyFragment.create();
case1:
return StoryFragment.create();
case2:
return ExtrasFragment.create();
case3:
return ChatFragment.create();
case4:
return SettingsFragment.create();
}
returnnull;
}
@OverridepublicintgetCount() {
return5;
}
Post a Comment for "Make Swap Vertical And Horizontal Work With Two Adapters"