Java Android应用程序如何在视频视图中触发长按事件
我一天之内就有一份关于这个问题的调查报告。 我的意思是在点击视频视图一段时间时如何显示祝酒词 下面是我发现的 但是这些真的不能解决我的问题。我真的不知道发生了什么? 在视频视图中是否有触发长按事件的功能 这是我的密码 这两件事真的不行Java Android应用程序如何在视频视图中触发长按事件,java,android,android-layout,android-imageview,android-view,Java,Android,Android Layout,Android Imageview,Android View,我一天之内就有一份关于这个问题的调查报告。 我的意思是在点击视频视图一段时间时如何显示祝酒词 下面是我发现的 但是这些真的不能解决我的问题。我真的不知道发生了什么? 在视频视图中是否有触发长按事件的功能 这是我的密码 这两件事真的不行 mVideoView.setOnLongClickListener(new OnLongClickListener() { public boolean onItemLongClick(AdapterView<?> arg
mVideoView.setOnLongClickListener(new OnLongClickListener() {
public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
final int arg2, long arg3) {
Log.e("devon","onitemlongclick");
return true;
}
@Override
public boolean onLongClick(View v) {
Log.e("devon","onLongClick");
return true;
}
});
mVideoView.setOnLongClickListener(新的OnLongClickListener(){
长单击(AdapterView arg0、视图arg1、,
最终整数(arg2,长arg3){
Log.e(“德文郡”、“长点击”);
返回true;
}
@凌驾
仅长按公共布尔值(视图v){
Log.e(“德文郡”、“onLongClick”);
返回true;
}
});
需要帮助!!!谢谢 - 在
调用中仅添加长单击侦听器setupViewComponent
- 尝试使用onTouch
- 尝试将OnLongClickListener附加到视频视图的表面
- 试着用一个透明的imageview/能够抓住焦点的东西来包装视频视图,并将其用作“触摸板”
- 日志跟踪
将其放入布局中,并在
setDeceDantFocusability()
调用中创建布局焦点\u块\u子体。然后捕获布局包装中的长点击,并相应地采取行动…不知道如何。如何尝试在setOnLongClickListener中使用onTouch??无法覆盖这一点,我如何尝试将OnLongClickListener连接到视频视图的表面?好吧,我的好兄弟,有一天你必须学会编码,最好从今天开始。现在剩下要做的就是编写代码,运行几次,看看哪些有效,哪些无效,稍微改进一下,然后再次运行。因此,为了回答您的问题-您没有在setOnLongClickListener()
中“附加”一个onTouch()
,您可以通过setOnTouchListener()
来“附加”它。
/**
* Simple OnTouchListenerIndexed with Indexes for VideoView ClickListeners
* You have to handle longClick and click by yourself
*/
private abstract class OnTouchListenerIndexed implements OnTouchListener {
private static final int LONG_CLICK_DURATION=600;//in millis
int dataIndex = INDEX_NOT_DEFINED;
int imageViewIndex = INDEX_NOT_DEFINED;
long timeActionDown;
AtomicBoolean stillNotConsumed=new AtomicBoolean(true);
AtomicBoolean actionDone=new AtomicBoolean(false);
public OnTouchListenerIndexed(int dataIndex, int imageViewIndex) {
this.dataIndex = dataIndex;
this.imageViewIndex = imageViewIndex;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
timeActionDown=System.currentTimeMillis();
stillNotConsumed.set(true);
actionDone.set(false);
//launch LongClick in 1s
v.postDelayed(new Runnable() {
@Override
public void run() {
if(stillNotConsumed.get()){
stillNotConsumed.set(false);
actionDone.set(true);
onLongTouch(dataIndex, imageViewIndex);
}
}
},LONG_CLICK_DURATION);
//consumed
return true;
}else if(event.getAction() == MotionEvent.ACTION_UP){
long timeActionUp=System.currentTimeMillis();
stillNotConsumed.set(false);
if(actionDone.get()){
//do nothing
return true;//you have consumed it
}else {
actionDone.set(true);
//Check Click or LongClick
if (timeActionUp - timeActionDown > LONG_CLICK_DURATION) {
//une seconde plus tard
return onLongTouch(dataIndex, imageViewIndex);
} else {
return onTouch(dataIndex, imageViewIndex);
}
}
}else{
//don't consume it
return false;
}
}
public abstract boolean onTouch(int dataIndex, int imageViewIndex);
public abstract boolean onLongTouch(int dataIndex, int imageViewIndex);
}