Android ImageView热点映射

时间:2012-04-23 08:06:17

标签: android image

我有一个大小为1024x768的图像,其中热点被映射到10英寸平板电脑上工作但是当我在点燃火上运行我的应用程序时,图像尺寸减小,热点将无法工作。是否有任何公式来映射坐标要用较大的图像映射较小的图像?

1 个答案:

答案 0 :(得分:1)

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

  1. 你用什么来显示图像? ImageView的?
  2. 图像是否缩放/裁剪以保持纵横比?
  3. 你是否在触控听众中获得X和Y?
  4. 您的热点是否通过某种打击测试仪实现,将触摸的X,Y与热点定义进行比较?
  5. 假设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);
     }