如何在安卓中获取视图的中心点坐标x,y?

42
我在我的框架布局中添加了一个ImageView,现在我想获得它的中心坐标。我会把这个坐标用于下一个布局中。请建议如何获取ImageView的中心坐标。
提前致谢

1
视图创建后?你尝试了什么? - Anders Metnik
5个回答

85

imageView的中心将会是:

 centreX=imageView.getX() + imageView.getWidth()  / 2;
 centreY=imageView.getY() + imageView.getHeight() / 2;

但是请确保在imageView创建之后调用它。


似乎在API级别低于11时无法使用getX()和getY()。 - RxRead
如果imageView被缩放了呢? - isaiasmac
4
这个解决方案仅与父视图相关。如果您希望它是全局的,您应该使用getLocationOnScreen或getLocationInWindow方法。 - Nativ
centreX和centreY将是浮点数。 - mehmoodnisar125

9
您可以使用getPivotX()getPivotY(),即使旋转视图也始终保持在视图中心。

为了帮助 OP 解决当前的问题,可以在回答中添加一些解释说明。 - ρяσѕρєя K
@aiueoH:能否获取中心点? - DKV

5

试试这个:

ImageView my_image = (ImageView) findViewById(R.id.my_imageView);  

Rect rectf = new Rect();
my_image.getLocalVisibleRect(rectf);

Log.d("WIDTH        :",String.valueOf(rectf.width()));
Log.d("HEIGHT       :",String.valueOf(rectf.height()));
Log.d("left         :",String.valueOf(rectf.left));
Log.d("right        :",String.valueOf(rectf.right));
Log.d("top          :",String.valueOf(rectf.top));
Log.d("bottom       :",String.valueOf(rectf.bottom));

希望这能对您有所帮助。谢谢。

4
如@aiueoH所提到的,你可以使用getPivotX()和getPivotY()
尝试使用这个方法来查找中心坐标:
int centreX = view.getPivotX()/2;
int centreY = view.getPivotY()/2;

1
也许除以2是不必要的?文档说明:“如果没有设置枢轴,则枢轴将是视图的中心。” - user650881

2
如果您希望将一个视图居中对齐于另一个视图,则可以使用以下方法 -
float center_x = parent_view.getX() + parent_view.getWidth()/2 - child_view.getWidth()/2;

然后显然使用 -
child_view.setX(center_x);

1
这是完美的答案。当你想在视图中设置TextView居中时,这个解决方案是有效的。以上解决方案无法给出完美的中心X。 - Bhautik Keraliya
1
工作中,谢谢。 - Muthuraman Sundararaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接