Я пытался определить, как на область просмотра - и содержимое внутри - влияет метатег области просмотра, используемый для рисования контента с помощью WebView или встроенного браузера.
Я столкнулся с некоторыми из них. очевидные несоответствия. Я создал небольшую страницу (см. Ниже) с изображением и некоторым javascript для отображения размера области просмотра, чтобы я мог визуально видеть масштабирование изображения, а также получать точные числа.
Во-первых, несколько наблюдений:
- Ни одно из значений ширины окна просмотра не совсем то, что я ожидал, просто близко.
- Когда числа близки к количеству пикселей устройства, рисунок на самом деле выполняется один к одному - или, по крайней мере, явно так выглядит.
- Если размер страницы (размер документа) меньше, чем у размер области просмотра, номера области просмотра уменьшаются. То есть область просмотра не t всегда обязательно представляют максимально возможное видимое пространство - только текущее видимое пространство.
- Аналогично, в собственном браузере размер области просмотра регулируется верхней панелью. Размер увеличивается по мере прокрутки экрана. Приведены цифры для полноэкранного отображения.
Устройство №1: физический экран 1024x600 и работает под управлением Android 2.2.
- initial-scale = 1.0 => 676x400
- initial-scale = 1.0, width = device- width => 676x400
- initial-scale = 2, width = device-width => 338x200
- initial-scale = 2, width = device-width, target-densitydpi = device-dpi
=> 507x300
- начальный масштаб = 0,5, ширина = ширина устройства,
target-densitydpi = device-dpi => 800x473
- initial-scale = 0.9, width = device-width,
target-densitydpi = device-dpi => 800x473
- width = device-width, target-densitydpi = device-dpi => 1014x600
- initial-scale = 1.0, width = device-width,
target-densitydpi = device-dpi => 1014x600
- initial-scale = 0,5, width = device-width,
target-densitydpi = device-dpi, minimum-scale = 0.1 => 2028x768
- initial-scale = 0.5, width = device-width,
target-densitydpi = device-dpi, минимальный масштаб = 0,1, масштабируемый пользователем = no =>
1014x600
Устройство №2: физический экран размером 800 x 480 и работает под управлением Android 2.3.2.
- initial-scale = 1.0 => 527x320
- initial-scale = 1.0, width = device-width => 527x320
- initial-scale = 2, width = device-width => 263x160
- initial-scale = 2, width = device-width, target-densitydpi = device-dpi
=> 395x240
- начальный масштаб = 0,5, ширина = ширина устройства,
target-densitydpi = device-dpi => 790x480
- initial-scale = 1.0, width = device-width,
target-densitydpi = device-dpi => 790x480
- initial-scale = 0.5, width = device-width,
target-densitydpi = device-dpi, minimum-scale = 0.1 => 1580x768
- initial-scale = 0.5, width = device-width,
target-densitydpi = device-dpi, минимальный масштаб = 0,1, масштабируемый пользователем = no =>
790x480
- width = 1580, target-densitydpi = device-dpi => 790x480
- width = 1580, target-densitydpi = device-dpi => 790x480
- width = 1580, target-densitydpi = device-dpi, минимальный масштаб = 0,1
=> 790x480
Из этих результатов следующее не имеет смысла:
- Устройство №1, элементы 5, 6 и 10
- Устройство №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.
Итак ... что мне не хватает?