0

我有一个大小为 1024x768 的图像,其中热点映射到在 10" 平板电脑上工作,但是当我在 kindle fire 上运行我的应用程序时,图像大小减小并且热点不起作用。是否有任何公式可以将坐标映射到较小的图像上用更大的图像映射?

4

1 回答 1

1

您没有提供足够的细节来提供准确的答案。

  1. 你用什么来显示图像?图像视图?
  2. 图像是否缩放/裁剪以保持纵横比?
  3. 您是否在触摸侦听器中获取 X 和 Y?
  4. 你的热点是用某种命中测试器实现的,比较触摸的 X、Y 和热点定义吗?

假设 ImageView 和一个触摸监听器获取 X 和 Y,那么您需要将热点缩放到您的图像显示的任何分辨率。我最近通过扩展 ImageView 类并覆盖 onMeasure() 回调来做到这一点。在 onMeasure 中,确定图像是横向还是纵向,然后计算图像原始尺寸(指定热点的尺寸)和显示尺寸之间的比例因子。

像这样的东西:

 if (this.getWidth() > this.getHeight()) {
     scaleFactor = ((float)this.getWidth() / (float)this.originalBitmapWidth);
 } else {
     scaleFactor = ((float)this.getHeight() / (float)this.originalBitmapHeight);
 }

 for (Hotspot hotspot : hotspots){
     hotspot.setScale(scaleFactor);
 }
于 2012-04-23T08:18:58.677 回答