android-studio - 如何将滚动/滑动手势应用于 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;
}
}
解决方案
推荐阅读
- html - 小屏幕上的引导隐藏不起作用?
- python-3.x - 如何在训练 CNN 时为 nn.Linear 层选择参数?
- android - 如何处理“地图添加折线试图抛出 OutOfMemoryError”googlemap 折线绘制
- c++ - 使用 DFS 在图中找到最小成本
- vim - 我正在尝试在 vim 上安装 vdebug,遇到 ./vim 问题
- php - 在主要受限用户而不是 www-data 下运行 PHP 是否安全?
- python - 如何将json响应列表转换为数据框?
- opengl - 具有多种颜色附件的多采样帧缓冲区的分辨率
- svg - Microsoft Edge 中的 SVG 动画兼容性
- javascript - 根据 redux 和路由器中的 jobId 获取特定的作业详细信息