如何获得一个圆形的Imageview中心

时间:2011-07-14 06:35:07

标签: android ontouchevent android-imageview

现在我有一个ImgeView,它有一个圆圈,我想找到那个圆圈的中心点,所以我尝试了以下代码,但它似乎无法正常工作

int[] location = new int[2];
            imageView.getLocationOnScreen(location);

int radius=imageView.getHeight()/2;
                    int[] center=new int[2];
                    center[0]=location[0]+radius;
                    center[1]=location[1]+radius;

所以“位置”得到的坐标是否是图像视图的顶点?

请帮我了解如何获取图像视图的中心点。

3 个答案:

答案 0 :(得分:10)

我假设下面的情况:

您将加载一个ImageView(来自xml或代码),并在myImageView(例如)中引用它。现在,您希望计算myImageView的中心,而不管它在屏幕上的位置。

如果我的假设是正确的,那么下面可能是您正在寻找的解决方案:

    int centerXOnImage=myImageView.getWidth()/2;
    int centerYOnImage=myImageView.getHeight()/2;

    int centerXOfImageOnScreen=myImageView.getLeft()+centerXOnImage;
    int centerYOfImageOnScreen=myImageView.getTop()+centerYOnImage;

答案 1 :(得分:0)

您可以使用以下方式获取左上角坐标:

ImageView iv = (ImageView)findViewById(R.id.image_view);
Rect rect = iv.getDrawable().getRect();
int xOffset = rect.left;
int yOffset = rect.top;

根据高度/ 2和宽度/ 2,您可以建立ImageView的中心。

答案 2 :(得分:0)

除了Chandan的回答, 说我们使用相同的代码:

int centerXOnImage=myImageView.getWidth()/2;
int centerYOnImage=myImageView.getHeight()/2;

int centerXOfImageOnScreen=myImageView.getLeft()+centerXOnImage;
int centerYOfImageOnScreen=myImageView.getTop()+centerYOnImage;

如果您的myImageView.getWidth()返回0,您可能需要进行一些修改:

myImageView.measure(0,0);
int centerXOnImage=myImageView.getMeasuredWidth()/2;
int centerYOnImage=myImageView.getMeasuredHeight()/2;

请注意,您可能希望在代码中创建myImageView并将其添加到根视图后执行此操作。