Android ImageView热点映射
我有一张大小为1024x768的图像,其中热点被映射到10英寸平板电脑上,但当我在kindle fire上运行应用程序时,图像大小会减小,热点将不起作用。有没有公式可以将较小图像上的坐标映射到较大图像上?您没有提供足够的详细信息来提供精确的答案Android ImageView热点映射,android,image,Android,Image,我有一张大小为1024x768的图像,其中热点被映射到10英寸平板电脑上,但当我在kindle fire上运行应用程序时,图像大小会减小,热点将不起作用。有没有公式可以将较小图像上的坐标映射到较大图像上?您没有提供足够的详细信息来提供精确的答案 您使用什么来显示图像?ImageView 是否缩放/裁剪图像以保持纵横比 你在触摸式听者中得到X和Y吗 您的热点是否使用某种命中测试仪来实现,将触摸的X、Y与热点定义进行比较 假设ImageView和touch listener获得X和Y,那么您需要将热
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);
}
1.我正在使用ImageView显示图像。好的。因此,假设您的应用程序在分辨率为512x384的设备上运行。您的图像将以其本机分辨率的一半显示(假设全屏)。因此,100100处的点击点需要缩放为50,50。由于宽度大于高度,您的缩放因子显示为宽度(在onMeasure中测量)除以原始宽度=512/1204=0.5。将热点在100100处缩放0.5,得到50,50。一个好的解决方案是测量位图的本机大小,使其完全可重复使用,而不是假设和硬代码为1024x768。