2012-04-23 4 views
0

У меня есть изображение размером 1024x768, где горячие точки отображаются для работы на 10-дюймовом планшете, но когда я запускаю свое приложение на Kindle Fire, размер изображения уменьшается, а горячие точки не работают. Есть ли какая-либо формула для отображения координат на меньшем изображения будет отображаться с большим изображением?Отображение горячей точки Android ImageView

ответ

1

вы не даете достаточно подробно, чтобы обеспечить точный ответ.

  1. Что вы используете для отображения изображения? ImageView?
  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); 
} 
+0

1. Я использую ImageView для отображения изображения. – Nick

+0

OK. Предположим, что ваше приложение работает на устройстве с разрешением 512x384. Ваше изображение будет отображаться в половине его собственного разрешения (при условии полного экрана). Таким образом, пятно на 100 100 должно быть увеличено до 50,50. Поскольку ширина больше высоты, ваш масштабный коэффициент отображается шириной (измеряется в onMeasure), деленной на исходную ширину = 512/1204 = 0,5. Увеличьте свою горячую точку на 100 100 на 0,5, чтобы получить 50,50. Хорошее решение будет измерять собственный размер растрового изображения, чтобы быть полностью повторно используемым, а не предполагать, и жесткий код, 1024x768. – Simon

Смежные вопросы