2

问候,

如何获取位图的坐标而不是屏幕的坐标。通过 event.getX(),event.getY() 方法获得的屏幕坐标,但未获取位图的坐标。请帮助任何人。

4

2 回答 2

2

您无法直接获取位图的坐标。你需要自己计算。使用 ImageView 的位置,你可以处理它。

当然,当您在 Activity onCreate 之后,您可以访问任何膨胀(活动)视图参数。例如。图像视图一个;a.getPaddingBottom(); 像所有坐标(左右等...)在此之后,您需要 ImageView 的高度和宽度。不,当您知道视图位置、高度和宽度时,您可以计算。

例子:

final ImageView iv_YourImage = (ImageView) findViewById(R.id.iv_imageview);
public boolean onTouch(View v, MotionEvent event){
int topParam =  iv_YourImage.getPaddingTop();
 int rightParam =  iv_YourImage.getPaddingRight();
int maxTopParam = topParam+iv_YourImage.getMaxHeight();
int maxRightParam = rightParam + iv_YourImage.getMaxWidth();
 if(event.getX>topParam&&event.getX<maxTopParam){
    //the x coordinate is in your image... do the same to Y
 }
return true;
}
于 2012-10-01T14:12:55.613 回答
0

如果答案太短,请查看以下代码:

Android:检测对 ImageView 中实际图像的触摸

该代码替换了此答案的填充和最大高度编码,并使用 getWidth() 和 getHeight() 将其替换为显示图像的实际宽度和高度。并使用屏幕宽度和高度来计算其位置。如果您想为您的问题提供更详细的答案,您应该提供更多信息,例如您在哪里绘制位图...您是在活动 XML 中定义它还是在随机位置(例如 X 和 Y 坐标)绘制它对于触摸事件,答案取决于该信息。

package com.example.img;

imports....

public Image extends Activity {

ImageView imgYourImage;
// int imgWidth;
// etc...

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_image);

    imgYourImage = (ImageView) findViewById(R.id.yourImage);
    imgDimension();
}

private void imgDimension() {
    imgWidth = imgYourImage.getWidth();
    // at newer api's you can use getLeft() and getTop() of imageView
    // if getLeft() works you have the leftX coordinate of image already.
    // do same with height
    // also get the screen Width and Height by display.getWidth() (depreciated)
    // Or the newer code display.getSize()
    leftX = (screenwidth - imgWidth) / 2;
    rightx = leftx + imgWidth;
}

请注意,此代码仅在图像显示在屏幕的水平中心时才有效。如果图像显示在屏幕的垂直中心,则使用顶部和底部。

于 2013-01-05T05:25:58.807 回答