我有一些情况,我有一个屏幕,当我触摸它在这个坐标上画一个点时,问题是我想在同一条线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));
}
}
答案 0 :(得分:1)
计算您的头寸绝对差异的最大值。
<dialog xsi:noNamespaceSchemaLocation="WatsonDialogDocument_1.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
答案 1 :(得分:0)
似乎没有直接的转换方法。
你必须借助数学手动转换它。
您可以根据属性处理坐标,例如平移或缩放甚至整个屏幕的旋转。