You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ExoPlayer中实现点击PlayerView暂停/恢复视频?

解决方案:点击PlayerView切换播放/暂停状态

我来帮你解决这个问题!既然你已经关闭了ExoPlayer的默认控制器,要实现点击PlayerView切换播放/暂停状态其实很简单,只需要修改你的触摸监听逻辑即可:

修改Java代码中的触摸监听

你只需要在OnTouchListener中判断触摸动作类型,在用户完成点击(ACTION_UP)时切换播放器的播放状态:

videoView.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // 仅处理点击抬起的动作,避免按下、滑动时误触发
        if (event.getAction() == MotionEvent.ACTION_UP) {
            if (player != null) {
                // 获取当前播放状态,取反后设置,实现切换
                boolean isCurrentlyPlaying = player.getPlayWhenReady();
                player.setPlayWhenReady(!isCurrentlyPlaying);
            }
            // 返回true表示已消费该触摸事件,阻止后续传递
            return true;
        }
        // 其他触摸动作不处理,返回false
        return false;
    }
});

代码解释

  • 触摸动作判断:我们只在MotionEvent.ACTION_UP时执行逻辑,这是因为这个事件代表用户完成了一次完整的点击操作,避免按下或滑动屏幕时误触发播放状态切换。
  • 状态切换逻辑:通过player.getPlayWhenReady()可以获取当前播放器是否处于播放状态,将这个值取反后传入player.setPlayWhenReady(),就能实现“点击暂停,再次点击恢复”的效果。
  • 事件消费:处理完点击事件后返回true,告诉Android系统我们已经处理了这个触摸事件,防止后续的事件传递导致意外的行为。

补充最佳实践

为了避免内存泄漏,记得在Activity/Fragment的生命周期结束时释放ExoPlayer资源:

@Override
protected void onDestroy() {
    super.onDestroy();
    if (player != null) {
        player.release();
        player = null;
    }
}

你的XML配置已经正确设置了app:use_controller="false",不需要做任何修改~

内容的提问来源于stack exchange,提问作者Ashvin solanki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:03:23