如何在与其他点相同的线(宽度或高度)上触摸点?

时间:2016-02-04 13:11:58

标签: android

我有一些情况,我有一个屏幕,当我触摸它在这个坐标上画一个点时,问题是我想在同一条线x或y上绘制第二个点,如果我们在点下触摸它还是旁边呢?你有什么想法吗?

这是我目前的绘图方法:

@Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            points.add(new MapPoint(event.getX(), event.getY()));
            if (surfaceHolder.getSurface().isValid()) {
                canvas = surfaceHolder.lockCanvas();
                canvas.drawColor(Color.WHITE);
                for (MapPoint point : points) {
                    canvas.drawCircle(point.getX(), point.getY(), 10, paint);
                }
                surfaceHolder.unlockCanvasAndPost(canvas);
            }
        }
        return false;
    }

这就是我想要做的,但我现在的问题是,如果我发现这条坐标有任何意义,它会接近不在触摸位置的点:

public void addPoint(float x, float y){
        if(points.size() < 1) {
            points.add(new MapPoint(x, y));
        } else {

            float deltaX = Math.abs(x - points.get(points.size() - 1).getX());
            float deltaY = Math.abs(y - points.get(points.size() - 1).getY());

            for (int i = 0; i < points.size(); i++) {
                if(Math.max(deltaX , deltaY) == deltaX){

                    y = points.get(i).getY();
                }else{

                    x = points.get(i).getX();
                }

            }

            points.add(new MapPoint(x, y));
        }
    }

2 个答案:

答案 0 :(得分:1)

计算您的头寸绝对差异的最大值。

<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

答案 1 :(得分:0)

似乎没有直接的转换方法。

你必须借助数学手动转换它。

您可以根据属性处理坐标,例如平移或缩放甚至整个屏幕的旋转。