我知道这个问题没有多大意义,但我有两个观点。
第一个我设定位置X
& Y
基于活动的触摸事件。
第二个就像一个固定在活动中间的箭头,我希望它准确指出第一个视图的位置。
有没有办法可以将视图的位置坐标转换为基于屏幕中心的角度值。?
parentView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
marker.setX(event.getX()); // marker is the first view
marker.setY(event.getY());
FixedArrow.setRotation(/* ??? */); //FixedArrow is the second view
return true;
}
});
答案 0 :(得分:0)
尝试这样的事情
public float getAngle(Point target, Point center) {
float angle = (float) Math.toDegrees(Math.atan2(target.y - center.y, target.x - center.x));
if(angle < 0){
angle += 360;
}
return angle;
}
称之为做这样的事情
Point target = new Point((int) event.getX(), (int) event.getY());
Point center = new Point(parentView.getWidth()/2, parentView.getHeight()/2);
FixedArrow.setRotation(getAngle(target,center));
答案 1 :(得分:0)
这是来自中学几何学的任务。基本上你需要的是解决直角三角形。此三角形的一侧始终是从屏幕中心到最近屏幕边框的一条线,另一条从中心到用户点击点。应用三角法,您可以计算角度。
最终公式和解释图片可以在this answer
中找到