问候,
如何获取位图的坐标而不是屏幕的坐标。通过 event.getX(),event.getY() 方法获得的屏幕坐标,但未获取位图的坐标。请帮助任何人。
问候,
如何获取位图的坐标而不是屏幕的坐标。通过 event.getX(),event.getY() 方法获得的屏幕坐标,但未获取位图的坐标。请帮助任何人。
您无法直接获取位图的坐标。你需要自己计算。使用 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;
}
如果答案太短,请查看以下代码:
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;
}
请注意,此代码仅在图像显示在屏幕的水平中心时才有效。如果图像显示在屏幕的垂直中心,则使用顶部和底部。