Android 使用倾斜向量识别光标所在的向量
我试图创造一个条件来知道我的光标在哪个向量中,所以我试图用一个图像来说明,想象它是一个平板电脑: 所以我需要一个代码来知道当事件ACTION.DOWN时光标在哪个向量中(不是坐标)。我知道我必须使用if条件和一些公式,但无法使用。首先,找到从屏幕中心到角落的斜率(Android 使用倾斜向量识别光标所在的向量,android,Android,我试图创造一个条件来知道我的光标在哪个向量中,所以我试图用一个图像来说明,想象它是一个平板电脑: 所以我需要一个代码来知道当事件ACTION.DOWN时光标在哪个向量中(不是坐标)。我知道我必须使用if条件和一些公式,但无法使用。首先,找到从屏幕中心到角落的斜率(y/x)。然后找到从中心到光标的坡度。比较绝对值 如果光标坡度高于拐角坡度,则位于第1/3节。否则,你将处于2/4。只需简单检查一下中心的哪一侧就可以确定从哪一侧开始 例如,如果光标坡度高于角点,且光标位于中心上方,则位于第1节。假设
y/x
)。然后找到从中心到光标的坡度。比较绝对值
如果光标坡度高于拐角坡度,则位于第1/3节。否则,你将处于2/4。只需简单检查一下中心的哪一侧就可以确定从哪一侧开始
例如,如果光标坡度高于角点,且光标位于中心上方,则位于第1节。假设动作向下事件的坐标为(x,y),矩形从左上角的(0,0)延伸到右下角的(w,h)。您可以使用以下公式对事件进行分类(通过将(x,y)与(w,h)以及[(x,y)-(w,0)]与[(0,h)-(w,0)]的叉积计算得出):
- x*h-y*w-如果这是正的,那么(x,y)在主对角线上方
- w*h-x*h-y*w-如果这是正的,那么(x,y)在次对角线上方
因此,如果事件位于两条对角线上方,则它最接近向量1;如果它位于主对角线上方,但在次对角线下方,则它最接近向量2;等等。感谢Ted Hopp粘贴我的图像。我做了计算,效果很好,现在我将它放入我的代码中,非常感谢@Ted Hopp