2 for 2012 for_2012 于 2013.04.03 17:10 提问

android触屏中心位置

使用下面的方法触发android的触屏事件。
需要辨识中心触屏,怎么样判断用户触摸了屏幕的中间位置?

@Override
public boolean onTouch(View v, MotionEvent mev) {
int width = v.getWidth();
int height = v.getHeight();
float x = mev.getX();
float y = mev.getY();
String msg;
if (x < width / 2) {
    if (y < height / 2)
        msg = "Top left quarter";
    else
        msg = "Bottom left quarter";
} else {
    if (y < height / 2)
        msg = "Top right quarter";
    else
        msg = "Bottom right quarter";
}
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
    return false;
}

1个回答

franzhong
franzhong   2013.04.06 15:36
已采纳

你这是将屏幕分为四块,要想"触摸了屏幕的中间位置"
设中心点坐标point(cX,cY)
那么cX = width/2;cY = height/2;
理论上说这个点是无穷小的,因为它就是一个点
要想触摸就得给他一个面,而不是一个点,需加个偏移量,例如,这个点左右50
offset = 50;//可调节数值
只要你那个onTouch中的x 与 y
只要满足
cX+offset>x>cX-offset   &&
cY+offset>y>cY-offset
就落到了中间指定的区域,既可视为点击了中心位置
可用笔在纸上画画看

另外,手指按屏幕是一个"大点",android只是用一种算法,根据面积选择合适的中心点做为你那个 MotionEvent的坐标,"很难"按到你那个点,换成按区域就好了

for_2012
for_2012 谢咯,这么耐心的解答
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!