栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

获取相对于视图的触摸坐标(等效于ScreenToClient?)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

获取相对于视图的触摸坐标(等效于ScreenToClient?)

只是为了回答,触摸在某种程度上是相对于视图的。是的,它们是触摸的原始屏幕坐标。但是,由于您将触摸事件注册到视图本身,因此只有在用户实际触摸视图时才会触发。这意味着,即使屏幕坐标是原始屏幕坐标,它们也位于视图本身的范围内。

如果只想获取触摸视图相对于自身的x / y坐标,则可以将屏幕坐标和顶部坐标从y坐标中减去左坐标,如下所示:

private onTouchListener image_Listener = new onTouchListener(){    @Override    public boolean onTouch(View v, MotionEvent event) {        if(event.getAction() == MotionEvent.ACTION_UP) { float screenX = event.getX(); float screenY = event.getY(); float viewX = screenX - v.getLeft(); float viewY = screenY - v.getTop(); return true;        }        return false;    }};

这样,如果用户在屏幕上触摸了40个x像素,但左侧边距设置为10,

viewX
则将为30。如果您将视图下移40个x像素,并且用户在视图中触摸了同一点,仍然是30。

如果您将填充包括在内,则它会变得稍微复杂一些,因为即使视图中的填充没有显示任何内容,它也仍算作视图。

编辑:

我应该指出,皮埃尔说的是真的。如果您触摸视图,则即使您将手指拖到视图范围之外,它也将继续接收触摸事件,直到手指抬起。这意味着,ACTION_UP可以接收不在范围内的视图触摸坐标。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483831.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号