前述(写给做过web前端的人)
在web H5,如果如果判断当前是否点击某个元素,一般会这样写。
window.addEventListener("touchstart",function(et){
if(e.target.id=='xx')
{
}
})
使用e.target 就能获取到真正点击的元素,自然帮我们排除了冒泡。
在web中,其实我们看到的可以假设是一张大图片,而事件真正的处理
的其实依然是根据x以及y轴的坐标来判断点击的是哪个元素。在android
是没有target这种东西的,那么就需要我们用原始的方式执行。
实践
- 监听到活动的touch事件。(嗯,其实activity已经帮我做了,我们需要override即可)
- 如何判断是否点击了某个元素。
判断是否点击某个元素
private boolean isTouchPointInView(View targetView,int currentX,int currentY)
{
if (targetView==null)
{
return false;
}
int[] localtion=new int[2];
targetView.getLocationOnScreen(localtion);
int left=localtion[0];
int top=localtion[1];
int right=left+targetView.getMeasuredWidth();
int bottom=top+targetView.getMeasuredHeight();
if (currentY >= top && currentY <= bottom && currentX >= left
&& currentX <= right) {
return true;
}
return false;
}
然后只要获取到x,y轴的坐标即可。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
View view=findViewById(R.id.test);
//判断是否被点击
if (!isTouchPointInView(view,(int) ev.getX(),(int) ev.getY()))
{
//如果没有点击任何处理
}
break;
}
return super.dispatchTouchEvent(ev);
}
结语
以上只是个人笔记,如果对有帮助请点个推荐,如果有不对的地方,请指正。