Android ImageView热点映射

Android ImageView热点映射,android,image,Android,Image,我有一张大小为1024x768的图像,其中热点被映射到10英寸平板电脑上,但当我在kindle fire上运行应用程序时,图像大小会减小,热点将不起作用。有没有公式可以将较小图像上的坐标映射到较大图像上?您没有提供足够的详细信息来提供精确的答案 您使用什么来显示图像?ImageView 是否缩放/裁剪图像以保持纵横比 你在触摸式听者中得到X和Y吗 您的热点是否使用某种命中测试仪来实现,将触摸的X、Y与热点定义进行比较 假设ImageView和touch listener获得X和Y,那么您需要将热

我有一张大小为1024x768的图像,其中热点被映射到10英寸平板电脑上,但当我在kindle fire上运行应用程序时,图像大小会减小,热点将不起作用。有没有公式可以将较小图像上的坐标映射到较大图像上?

您没有提供足够的详细信息来提供精确的答案

  • 您使用什么来显示图像?ImageView
  • 是否缩放/裁剪图像以保持纵横比
  • 你在触摸式听者中得到X和Y吗
  • 您的热点是否使用某种命中测试仪来实现,将触摸的X、Y与热点定义进行比较
  • 假设ImageView和touch listener获得X和Y,那么您需要将热点缩放到图像显示的任何分辨率回调。在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);
     }
    

    1.我正在使用ImageView显示图像。好的。因此,假设您的应用程序在分辨率为512x384的设备上运行。您的图像将以其本机分辨率的一半显示(假设全屏)。因此,100100处的点击点需要缩放为50,50。由于宽度大于高度,您的缩放因子显示为宽度(在onMeasure中测量)除以原始宽度=512/1204=0.5。将热点在100100处缩放0.5,得到50,50。一个好的解决方案是测量位图的本机大小,使其完全可重复使用,而不是假设和硬代码为1024x768。