android - ExoPlayer PlayerView OnClickListener 不工作
问题描述
在我的应用程序中,我想处理用户点击PlayerView
但OnClickListener
不被调用并且不抛出异常。我添加app:use_controller="false"
到 XML PlayerView
。
我试图设置OnTouchListener
但我需要MotionEvent.ACTION_UP
被调用,这也没有发生(因为我不想在用户滚动时处理这种情况,我需要在用户点击 PlayerView 时处理这种情况)。
class FeedHolder extends RecyclerView.ViewHolder {
private TextView displayName, jobTitle, action, date, likedBy;
private ImageIndicator profile_pic;
private ImageView videoOptions, likeImage, shareImage;
private PlayerView playerView;
private WebView webView;
@SuppressLint("SetJavaScriptEnabled")
FeedHolder(View itemView) {
super(itemView);
profile_pic = itemView.findViewById(R.id.profile_pic);
likedBy = itemView.findViewById(R.id.tv_like_by);
date = itemView.findViewById(R.id.tv_date);
likeImage = itemView.findViewById(R.id.img_like);
shareImage = itemView.findViewById(R.id.img_share);
displayName = itemView.findViewById(R.id.tv_display_name);
jobTitle = itemView.findViewById(R.id.tv_job_title);
action = itemView.findViewById(R.id.btn_action);
videoOptions = itemView.findViewById(R.id.video_options);
playerView = itemView.findViewById(R.id.exo_player);
webView = itemView.findViewById(R.id.web_view);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new AnimationWebViewClient());
webView.getSettings().setAllowFileAccessFromFileURLs(true);
webView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
}
}
@Override
public void onBindViewHolder(@NonNull FeedHolder holder, int position) {
holder.playerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
...
}
});
}
解决方案
您可以使用:
video.setControllerAutoShow(false);
video.setUseController(false);
video.getVideoSurfaceView().setOnClickListener(view -> {
Log.e("GET", "clicked!");
if(player.getPlayWhenReady()){
player.setPlayWhenReady(false);
}else{
player.setPlayWhenReady(true);
}
});
推荐阅读
- r - 错误:“零长度箭头的角度不确定,因此被跳过”
- python - 将一列拆分为两列留下空白
- sql - 在 Postgresql 中限制基于 FK 的有向无环图的 CTE 搜索
- javascript - 错误 500 原因:java.sql.SQLException:没有为参数 34 指定值
- scala - 获取具有地图数据类型列的两个火花数据帧之间的差异
- visual-studio-code - 如何在 VSCode 选择语言模式中删除 Django HTML 作为选项?
- c++ - 来自 dll 的对非成员运算符的未定义引用
- regex - Perl:正则表达式来剪切括号中的单词
- reactjs - React hooks:如何观察 JS 类对象的变化?
- python - 设备在 PyUSB 上不可用