Осмысление масштабирования мета-области просмотра Android: что мне не хватает?

Я пытался определить, как на область просмотра - и содержимое внутри - влияет метатег области просмотра, используемый для рисования контента с помощью WebView или встроенного браузера.

Я столкнулся с некоторыми из них. очевидные несоответствия. Я создал небольшую страницу (см. Ниже) с изображением и некоторым javascript для отображения размера области просмотра, чтобы я мог визуально видеть масштабирование изображения, а также получать точные числа.

Во-первых, несколько наблюдений:

  1. Ни одно из значений ширины окна просмотра не совсем то, что я ожидал, просто близко.
  2. Когда числа близки к количеству пикселей устройства, рисунок на самом деле выполняется один к одному - или, по крайней мере, явно так выглядит.
  3. Если размер страницы (размер документа) меньше, чем у размер области просмотра, номера области просмотра уменьшаются. То есть область просмотра не t всегда обязательно представляют максимально возможное видимое пространство - только текущее видимое пространство.
  4. Аналогично, в собственном браузере размер области просмотра регулируется верхней панелью. Размер увеличивается по мере прокрутки экрана. Приведены цифры для полноэкранного отображения.

Устройство №1: физический экран 1024x600 и работает под управлением Android 2.2.

  1. initial-scale = 1.0 => 676x400
  2. initial-scale = 1.0, width = device- width => 676x400
  3. initial-scale = 2, width = device-width => 338x200
  4. initial-scale = 2, width = device-width, target-densitydpi = device-dpi => 507x300
  5. начальный масштаб = 0,5, ширина = ширина устройства, target-densitydpi = device-dpi => 800x473
  6. initial-scale = 0.9, width = device-width, target-densitydpi = device-dpi => 800x473
  7. width = device-width, target-densitydpi = device-dpi => 1014x600
  8. initial-scale = 1.0, width = device-width, target-densitydpi = device-dpi => 1014x600
  9. initial-scale = 0,5, width = device-width, target-densitydpi = device-dpi, minimum-scale = 0.1 => 2028x768
  10. initial-scale = 0.5, width = device-width, target-densitydpi = device-dpi, минимальный масштаб = 0,1, масштабируемый пользователем = no => 1014x600

Устройство №2: физический экран размером 800 x 480 и работает под управлением Android 2.3.2.

  1. initial-scale = 1.0 => 527x320
  2. initial-scale = 1.0, width = device-width => 527x320
  3. initial-scale = 2, width = device-width => 263x160
  4. initial-scale = 2, width = device-width, target-densitydpi = device-dpi => 395x240
  5. начальный масштаб = 0,5, ширина = ширина устройства, target-densitydpi = device-dpi => 790x480
  6. initial-scale = 1.0, width = device-width, target-densitydpi = device-dpi => 790x480
  7. initial-scale = 0.5, width = device-width, target-densitydpi = device-dpi, minimum-scale = 0.1 => 1580x768
  8. initial-scale = 0.5, width = device-width, target-densitydpi = device-dpi, минимальный масштаб = 0,1, масштабируемый пользователем = no => 790x480
  9. width = 1580, target-densitydpi = device-dpi => 790x480
  10. width = 1580, target-densitydpi = device-dpi => 790x480
  11. width = 1580, target-densitydpi = device-dpi, минимальный масштаб = 0,1 => 790x480

Из этих результатов следующее не имеет смысла:

  1. Устройство №1, элементы 5, 6 и 10
  2. Устройство №2, элементы 5, 8, 10, 11, 12

Кто-нибудь знает, что происходит с теми, которые не имеют смысла?

Кто-нибудь знает, почему многие из значений на 10 пикселей не соответствуют физическим пикселям, но результат такой, как если бы они совпадали? (например, 1.7 и 2.6)

Я делаю что-то не так, или кажется, что невозможно уменьшить масштаб больше 1.0, если пользователю также не разрешено масштабировать и не установлено минимальное значение масштаба?

То есть, хотя допустимые значения составляют от 0,01 до 10, значения начальной шкалы ниже 1,0 игнорируются, если вы также не можете установить минимальную шкалу.

В документах Android говорится, что когда масштабируемая пользователем нет, то минимальная / max значения масштаба игнорируются. Это не кажется очень полезным. И версии 2.9–2.11, похоже, показывают, что вы не можете просто рассчитать это самостоятельно и установить ширину.

Наконец, HTML, который я использую:




    


Hello world.

Итак ... что мне не хватает?

46
задан Andrew Whitaker 24 September 2011 в 16:15
поделиться