首页 > 解决方案 > 如何将滚动/滑动手势应用于 VideoView

问题描述

我正在尝试制作一个可滚动的 VideoView。我希望用户的滚动手势使 videoview 进展顺利。我希望这是有道理的。

我尝试将 OnTouchListener 应用于 VideoView,然后将 MotionEvent 提供给 GestureDetector,然后我尝试覆盖所述 GestureDetector 的 OnScroll 方法。视频进展非常突然,而且间隔不规则。

我将非常感谢您能给我的任何指示。正如您可能知道的那样,我对编程很陌生,所以不要犹豫,让它变得愚蠢。

到目前为止,这是我的代码,在此先感谢您。

public class MainActivity extends AppCompatActivity implements
    View.OnTouchListener,
    GestureDetector.OnGestureListener {

    GestureDetector mgestureDetector;
    VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mgestureDetector = new GestureDetector(this, this);
        videoView = findViewById(R.id.video_view);
        String videoPath = "android.resource://" +getPackageName() +"/" + R.raw.video;
        Uri uri = Uri.parse(videoPath);
        videoView.setVideoURI(uri);
        videoView.setOnTouchListener(this);
    }

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

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

    @Override
    public void onShowPress(MotionEvent e) {

    }

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

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

        videoView.seekTo(videoView.getCurrentPosition() + (int)distanceY);
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {

    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        return false;
    }
}

标签: android-studioandroid-videoviewontouchlistenergesturedetector

解决方案


推荐阅读