在视图上有效使用 touch/hover 坐标
Effective use of touch/hover co-ordinates on a View
在 Android phone 上,我得到了用户在 his/her phone 屏幕或设备上触摸的坐标信息。那么我如何,use/pass这些X-Y坐标运行我的一个特定函数,并在我的代码中使用它
来自 的参考,如果用户在您的应用程序上触摸屏幕,您可以获得坐标。在触摸侦听器上实现之后,然后在 if
语句中 MotionEvent.ACTION_UP
把它放在那里
float myX = event.getX();
float myY = event.getY();
// now you can then pass myX,myY in your method or function as parameters
如果您恰好定位 Api 14+
,那么您可以使用 onhover
,方法与 post 中的第一个相同,而不是使用 setOnTouchListener
使用getWindow().getDecorView().setOnHoverListener()
就是这样。
旁注是使用第一个更好,因为不能相信 onHover 可以工作,实际上它对我不起作用,那只是 btw
希望我回答了你的问题。
您可以通过扩展 android 视图并覆盖 onTouchEvent 方法来创建自定义视图。例如,
public class NotTouchableWebView extends WebView {
private Context context;
public NotTouchableWebView(Context context) {
super(context);
this.context=context;
}
public NotTouchableWebView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
}
public NotTouchableWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context=context;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public NotTouchableWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
this.context=context;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (some condition){
//your specific function
return false;
}
return super.onTouchEvent(event);
}
}
在 Android phone 上,我得到了用户在 his/her phone 屏幕或设备上触摸的坐标信息。那么我如何,use/pass这些X-Y坐标运行我的一个特定函数,并在我的代码中使用它
来自 if
语句中 MotionEvent.ACTION_UP
把它放在那里
float myX = event.getX();
float myY = event.getY();
// now you can then pass myX,myY in your method or function as parameters
如果您恰好定位 Api 14+
,那么您可以使用 onhover
,方法与 post 中的第一个相同,而不是使用 setOnTouchListener
使用getWindow().getDecorView().setOnHoverListener()
就是这样。
旁注是使用第一个更好,因为不能相信 onHover 可以工作,实际上它对我不起作用,那只是 btw
希望我回答了你的问题。
您可以通过扩展 android 视图并覆盖 onTouchEvent 方法来创建自定义视图。例如,
public class NotTouchableWebView extends WebView {
private Context context;
public NotTouchableWebView(Context context) {
super(context);
this.context=context;
}
public NotTouchableWebView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context=context;
}
public NotTouchableWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
this.context=context;
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public NotTouchableWebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
this.context=context;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (some condition){
//your specific function
return false;
}
return super.onTouchEvent(event);
}
}