Samsung Galaxy S4 具有“ float 触摸”功能,即使没有触摸屏幕也可以检测到手指。
当手指悬停在按钮上时,我想在按钮 (btn1
) 上触发一个事件。
我尝试使用 OnHoverListener
,但是当 MotionEvent
为 MotionEvent.ACTION_HOVER_ENTER
或MotionEvent.ACTION_HOVER_EXIT
或 MotionEvent.ACTION_HOVER_MOVE
,这是我需要的事件。
这是我的代码:
btn1.setOnHoverListener(new OnHoverListener() {
@Override
public boolean onHover(View v, MotionEvent event) {
Log.d("FloatingTouch", "onHover: "+event.getAction());
switch (event.getAction()) {
case MotionEvent.ACTION_HOVER_ENTER:
Log.d("FloatingTouch", "ACTION_HOVER_ENTER" );
return true;
case MotionEvent.ACTION_HOVER_MOVE:
Log.d("FloatingTouch", "ACTION_HOVER_MOVE" );
return true;
case MotionEvent.ACTION_HOVER_EXIT:
Log.d("FloatingTouch", "ACTION_HOVER_EXIT" );
break;
default:
break;
}
return false;
}
});
我错过了什么吗?也许一些许可?
最佳答案
好的,我终于明白了!
要使其正常工作,您必须:
- 为 list 中的 Activity 添加一个新的 intent 过滤器到
com.sec.android.airview.HOVER
:
<intent-filter>
<action android:name="com.sec.android.airview.HOVER" />
</intent-filter>
- 添加一个
onHoverListener
给你View
convertView.setOnHoverListener(new OnHoverListener() {
@Override
public boolean onHover(View v, MotionEvent event) {
Log.d("ListAdapter", "Hover: " + item);
return false;
}
});
它会起作用。
关于android - Galaxy S4 上的 float 触控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16666965/