Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于特殊控件的事件处理 #60

Open
Zzzzzz123 opened this issue Dec 8, 2016 · 1 comment
Open

关于特殊控件的事件处理 #60

Zzzzzz123 opened this issue Dec 8, 2016 · 1 comment

Comments

@Zzzzzz123
Copy link

这个问题是特殊控件的事件处理方案那的,

Region globalRegion = new Region(-w, -h, w, h);
RectF bigCircle = new RectF(-br, -br, br, br);
Region left= new Region();
left.setPath(right_p, globalRegion);
此时 leftRegion 的left 和 top 应该是负数

canvas.translate(mViewWidth / 2, mViewHeight / 2);之后再执行 canvas.getMatrix().invert(mMapMatrix);
mMapMatrix应该就是把坐标系反向偏移回去,就是正常的坐标系,因为left不是正常坐标系的位置,那怎么能用 left.contains(x, y)???

还有就是要是使用event.getY() event.getX() 是不是就可以不用写这句代码了? mMapMatrix.mapPoints(pts);

@GcsSloop GcsSloop changed the title 哈喽,GcsSloop 关于特殊控件的事件处理 Dec 8, 2016
@GcsSloop
Copy link
Owner

GcsSloop commented Dec 8, 2016

在处理特殊形状控件事件中,我采用的方案逆向计算。

主要涉及两个坐标系: 屏幕的物理坐标系画布绘制的坐标系

正常绘制时坐标系转换:

画布坐标系 -> 屏幕物理坐标系

处理触摸事件时坐标系转换

屏幕物理坐标系 -> 画布坐标系

所以获取的事件要是屏幕物理坐标系的坐标,才能正常转换为画布坐标系的坐标,也才能正常使用 region 判断。

需要注意的问题

注意关闭硬件加速。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants