我有一个大小为 1024x768 的图像,其中热点映射到在 10" 平板电脑上工作,但是当我在 kindle fire 上运行我的应用程序时,图像大小减小并且热点不起作用。是否有任何公式可以将坐标映射到较小的图像上用更大的图像映射?
问问题
600 次
1 回答
1
您没有提供足够的细节来提供准确的答案。
- 你用什么来显示图像?图像视图?
- 图像是否缩放/裁剪以保持纵横比?
- 您是否在触摸侦听器中获取 X 和 Y?
- 你的热点是用某种命中测试器实现的,比较触摸的 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 回答