java – 如何增加一定比例的触摸面积?

前端之家收集整理的这篇文章主要介绍了java – 如何增加一定比例的触摸面积?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我一直在尝试开发这个游戏,用户必须点击图像上的某些点.我一直根据像素位置存储这些点.通过获取onTouch事件中的X和Y坐标,我可以轻松地按下像素.但是我面临的问题是每次都难以按下像素的确切位置(因此,为了测试目的,我在所有4个方向上设置了40 px的容差).那么有没有一种方法可以设置某种容差,可以从设置菜单进行调整,以便人们可以轻松地使用不同手指尺寸的人,并从不同的屏幕尺寸播放?我们非常感谢您提供任何帮助或建议

tolerance = 40
public boolean onTouchEvent(MotionEvent event) {
    // MotionEvent object holds X-Y values
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
        int XCood = (int) event.getX();
        int YCood = (int) event.getY();
        int XMin = ActXCod[index] - tolerance,XMax = ActXCod[index] + tolerance,YMin = ActYCod[index] - tolerance,YMax = ActYCod[index] + tolerance;
        if (index < (limit - 1)) // loop to check number of images
        {
            if(XCood > XMin && XCood < XMax && YCood > YMin && YCood < YMax){
            //Do stuff
        }}}

这里XMin和XMax是X坐标可以的最小和最大范围,Ymin和Ymax是Y坐标的最小和最大范围.
XCood和YCood是用户触摸的a和y坐标.

最佳答案
用户必须点击图片上的某些点告诉我,而不是putting invisible/transparent buttons over the image,每个点都有自己的事件处理,您选择对发送到一个地方的图像进行任何点击,并决定点击什么目标.

(一个)
(b)中
(C)

这意味着如果您的图像看起来像(a)您设置了点(像素位置),如(b):

这可以理解地引起你的问题,因为人类很难击中那些小目标.

你已经决定解决这个问题的方法是给人类更胖的手指,并试图校准脂肪的制作方法.让我们试一下用户试图拨打1238的用例.在(c)中,当他们走的时候我会增加手指的大小.由于8号媒体报道了8和0的点,我说这太大了.

(d)
(e)中
(F)

(d)显示用这种方法校准的合理尺寸.请注意,1和3仍然错过. 1是一个错过,因为这些按钮不是方形的.这是这种胖指方法的局限. 3是一个未命中因为人实际上错过了按钮之间的命中.如果你坚持3应该算,我不知道如果没有2,5和& 6计数.如果这是你想要的,我们需要矩形碰撞检测.稍后会详细介绍.

假设3应被视为未命中,我希望您考虑(d)在数学上与(e)相同.只需在目标点而不是用户手指上添加公差即可实现. 1和3仍然是未命中但现在不是关心校准用户手指的肥胖,我们只关心目标有多大.

简单地用这种方式思考就可以让我们自由地处理我们的目标不是正方形的事实.它们是矩形.在(f)中这样做可以修复错过的1.如果您的目标具有相同的大小和比例,则不需要使用不同的x和y容差来处理.如果您希望能够灵活地更改大小,以便正确处理该绿色按钮,则可以将目标建模为单点.使用android.graphics.Rect对它们进行建模.实际上我更喜欢用他们自己的类来模拟它们,这个类包含一个android.graphics.Rect,但这是一个OOP肥皂盒,我会在其他时间爬上去.

假设您已经在某处定义了一个新的Rect(左,上,右,下)]并将其分配给Rect r;你现在可以用r.contains( (int) event.getX(),(int) event.getY() );检测到命中
既然我们已经在OOP众神中嗤之以鼻,并拒绝了按钮的想法,我会说每次点击都会循环通过所有目标测试包含().

(G)

现在,如果你真的坚持要在用户未命中3时触发2,3,5和6,那么请查看motionEvent.getSize().这将测量触摸的“fatness”从0到1.如果getToolMajor()getTouchMajor()可用,他们可能会帮助您估算触及的实际像素数.知道screen size可能会有所帮助,但据我在文档中可以看出,使用任何这些产生的任何像素大小都是近似的.某些测试将有助于确定它是否按原样工作,或者是否需要任何缩放常数.这可能比你期望的要小,因为它们是专为油漆程序而设计的,可以增加压力,而不是让你的指尖碰到东西.

使用像容差一样在点击周围建立另一个Rect(让我们称之为fatFinger).在循环中测试r.intersects(fatFinger),为您提供图像上的每个r.每次真的你都找到了另一个要处理的东西.

这应该给你一些像(g).现在,3台印刷机是2,5和5. 6按,1按现在是1& 4按和8按是8& 0按.

2台印刷机奇迹般地只是2台印刷机.拉出它几乎和用触点点击点一样难.这可能适合您的游戏,但请不要在我的手机上使用它. 原文链接:https://www.f2er.com/android/431161.html

猜你在找的Android相关文章