-1

I am developing video player app using Exoplayer and applying swipe gestures for volume and brightness. Swipe gesture for top,bottom,right,left are working well. But i want to split width into two parts for volume and brightness features separately, suggest me extra code for doing this. This is my code for OnSwipeTouchListner.java

public class OnSwipeTouchListener implements View.OnTouchListener {
private final GestureDetector gestureDetector;

public OnSwipeTouchListener(Context ctx) {
    gestureDetector = new GestureDetector(ctx, new GestureListener());
}

@Override
public boolean onTouch(View v, MotionEvent event) {
    return gestureDetector.onTouchEvent(event);
}

private final class GestureListener extends GestureDetector.SimpleOnGestureListener {
    private static final int SWIPE_THRESHOLD = 100;
    private static final int SWIPE_VELOCITY_THRESHOLD = 100;

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

    ///below first one is downEvent second is moveEvent
    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        boolean result = false;
        try {
            float diffY = e2.getY() - e1.getY();
            float diffX = e2.getX() - e1.getX();
            if (Math.abs(diffX) > Math.abs(diffY)) {
                if (Math.abs(diffX) > SWIPE_THRESHOLD && Math.abs(velocityX) > SWIPE_VELOCITY_THRESHOLD) {
                    if (diffX > 0) {
                        onSwipeRight();
                    } else {
                        onSwipeLeft();
                    }
                    result = true;
                }
            } else if (Math.abs(diffY) > SWIPE_THRESHOLD && Math.abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) {
                if (diffY > 0) {
                    onSwipeBottom();
                } else {
                    onSwipeTop();
                }
                result = true;
            }
        } catch (Exception exception) {
            exception.printStackTrace();
        }
        return result;
    }
}

public void onSwipeRight() {
}

public void onSwipeLeft() {
}

public void onSwipeTop() {
}

public void onSwipeBottom() {
}}

Below code is implementation in Main Activity

playerView.setOnTouchListener(new OnSwipeTouchListener(this){
        public void onSwipeTop() {
            Toast.makeText(VideoPlayerActivity.this, "top", Toast.LENGTH_SHORT).show();
        }
        public void onSwipeRight() {
            Toast.makeText(VideoPlayerActivity.this, "right", Toast.LENGTH_SHORT).show();
        }
        public void onSwipeLeft() {
            Toast.makeText(VideoPlayerActivity.this, "left", Toast.LENGTH_SHORT).show();
        }
        public void onSwipeBottom() {
            Toast.makeText(VideoPlayerActivity.this, "bottom", Toast.LENGTH_SHORT).show();
        }
    });
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Ukasha
  • 1
  • 3

1 Answers1

0

To check which part of your screen is touched ( left part or right part ), first try by calculating the screen's width and height inside onDown:

screen_width = getResources().getDisplayMetrics().widthPixels;
screen_height = getResources().getDisplayMetrics().heightPixels;

Create 2 booleans:

private boolean isLeft;
private boolean isRight;
@Override
        public boolean onDown(MotionEvent event) {
            Log.d("TAG","onDown: ");
            screen_width = getResources().getDisplayMetrics().widthPixels;
            screen_height = getResources().getDisplayMetrics().heightPixels;
            
            if (event.getX() < (screen_width / 2)) {
                // isLeft means the left side is touched
                isLeft = true;
                isRight = false;

            } else if (event.getX() > (screen_width / 2)) {
                // isRight means the right side is touched
                isLeft = false;
                isRight = true;
            }
            // don't return false here
            // or else none of the other gestures will work
            return true;
        }

Then use the booleans as you wish:

if (isRight) {

} else if (isLeft) {

}
private static
  • 745
  • 8
  • 17