在android中处理onScroll滑动手势

时间:2021-06-09 13:31:53

标签: android volume swipe-gesture

我想通过在屏幕上滑动来控制音量,但问题是我无法找到合适的滑动速度。有时只需轻轻滑动即可波动太大,反之亦然。我尝试了许多不同的滑动速度,但仍然无法顺利工作。如何将其更改为按预期工作?这是实现

public boolean onScroll(MotionEvent e1, MotionEvent e2,
                           float distanceX, float distanceY) {
  int halfWidth = getWindow().getDecorView().getWidth() / 2;
  boolean result = false;
  AudioManager mAudioManager;
  int SWIPE_THRESHOLD = 100;
  int SWIPE_VELOCITY_THRESHOLD = 100;
  if (e1.getX() > halfWidth) {
     int swipeVolume = (int) ((Math.abs(diffY) - SWIPE_THRESHOLD) / SWIPE_VELOCITY_THRESHOLD);
     if (diffY > 0) {
        onSwipeBottom(swipeVolume);
     } else {
        onSwipeTop(swipeVolume);
     }
     result = true;
}

  private void onSwipeTop(int increaseVolume) {
    
                int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
                int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
                int nextVolume = currentVolume + increaseVolume;
                
                if (nextVolume > maxVolume) {
                    nextVolume = maxVolume;
                }
                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC,  nextVolume, AudioManager.ADJUST_RAISE);
}

  private void onSwipeBottom(int decreaseVolume) {
            int minVolume = mAudioManager.getStreamMinVolume(AudioManager.STREAM_MUSIC);
            int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
            int nextVolume = currentVolume - decreaseVolume;
           
            if (nextVolume < minVolume) {
                nextVolume = 0;
                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nextVolume, 0);
            } else {
                nextVolume = nextVolume;
            }
            mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, nextVolume, 0);
 }

0 个答案:

没有答案