我正在尝试在屏幕上获取图像的坐标。我目前在一个活动中有一个ImageView。我了解到,只有在创建布局后才能调用getLocationOnScreen()方法,因此在oncreate函数中调用此方法将返回[0,0]。但是我不知道如何获得此方法以返回正确的值。我尝试覆盖各种超类方法,例如onstart方法或onTouchEvent方法,但它仍然向我返回[0,0]。我目前拥有的代码如下:

@Override
public void onCreate(Bundle savedInstanceState)
{
    // Some code here after which ..
    image = (ImageView) findViewById(R.id.imageVfi);
    image.setImageBitmap(imageData.entrySet().iterator().next().getValue());
}


然后我有重写的onStart方法

@Override
public void onStart()
{
    super.onStart();
    image.setOnTouchListener(new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            int[] dim = new int[2];
            image.getLocationOnScreen(dim);
            new AlertDialog.Builder(DisplayPicture.this)
            .setIcon(R.drawable.icon)
            .setTitle("Touch coordinates : " +
                    String.valueOf(dim[0]) + "x" + String.valueOf(dim[1]))
            .setPositiveButton("OK",
                     new DialogInterface.OnClickListener() {
                 public void onClick(DialogInterface dialog, int which)
                 {
                     // TODO Auto-generated method stub
                 }
            }).show();
            // image calculations go here
            return true;

        }
    });
}


这将0X0返回给我。任何帮助深表感谢。

最佳答案

ImageView没有提供在屏幕上获取其图像位置的方法。您只能查询ImageView本身的位置。您可以尝试使用ImageView.getImageMatrix(),但不确定在图像居中时(相对于缩放比例等)是否填充它。

关于java - ImageView getLocationtOnScreen android,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5768291/

10-16 06:21