2010-05-09 5 views
22

Я разрабатываю HTML-страницу для отображения в браузерах Android. Рассмотрим простой пример страницы:Как заставить браузер WVGA Android перестать масштабировать мои изображения?

<html> 
<head><title>Simple!</title> 
</head> 
<body> 
<p><img src="http://sstatic.net/so/img/logo.png"></p> 
</body> 
</html> 

Он выглядит просто отлично на стандартных HVGA телефонов (320x480), но по размерам WVGA ИПЧР (480x800 или 480x854) встроенный браузер автоматически масштабирует изображение вверх; это выглядит уродливо.

Я читал, что я должен быть в состоянии используйте этот тег, чтобы заставить браузер, чтобы остановить масштабирование моей страницы:

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=0;" /> 

... но все, что делает отключение пользователя масштабирование (кнопки масштабирования исчезают); это фактически не мешает браузеру масштабировать мой образ. Корректировка масштабных коэффициентов (установка их всех на 2,0 или 0,5) не оказывает никакого эффекта.

Как заставить браузер WVGA прекратить масштабирование моих изображений?

+0

Я заметил, что настройки «по умолчанию Уменьшить» настройка в настройках браузера на «Far» отключит масштабирование изображения, но я не могу ожидать, что все мои пользователи сделают это. –

+1

Существует API для установки «Default Zoom», добавленного в Android 2.1/API уровня 7. webview.getSettings(). SetDefaultZoom() –

+0

Для целей этого вопроса я создаю веб-сайт, а не приложение для Android с WebView, поэтому я не могу использовать Android API. –

ответ

32

А, нашел его, выполнив поиск по исходному коду Android. В метатеге «viewport» есть новая настройка «target-densityDpi» для Android; насколько я могу судить, это полностью недокументировано, за исключением комментариев на регистрацию!

Поддержка поддержки точек на дюйм для WebView.

В метатеге «viewport» вы можете указать «target-densityDpi». Если он не указан, он использует значение по умолчанию, 160 точек на дюйм на сегодняшний день. Тогда масштабный коэффициент 1.0, указанный в теге просмотра, означает 100% на G1 и 150% на Sholes. Если вы установите «target-densityDpi» на «device-dpi», то масштабный коэффициент 1.0 означает 100% как для G1, так и для Sholes.

Реализован Safari's window.devicePixelRatio и css media query Отношение пикселов к устройствам.

Так что, если вы используете «устройства-точки на дюйм» и изменить CSS для размера шрифта и изображений ЦСИ в зависимости от window.devicePixelRatio, вы можете получить лучшую страницу на Sholes/Passion.

Вот список вариантов для «target-densityDpi».

device-dpi: используйте собственный dpi в качестве целевого dpi. с низким разрешением на дюйм: 120dpi medium-dpi: 160dpi, что также является значением по умолчанию на сегодняшний день с высоким разрешением: 240dpi : Мы принимаем любое число от 70 до 400 в качестве допустимого целевого dpi.

+0

Поддержка целевой плотности Dpi была добавлена ​​в Android-источник 21 сентября 2009 года и, по-видимому, не была включена в Android 1.6 по крайней мере. Он был добавлен в эту фиксацию: https://android.git.kernel.org/?p=platform/external/webkit.git;a=commit;h=f10585d69aaccf4c1b021df143ee0f08e338cf31 –

+0

@morganchristiansson Это правда, но есть очень мало Android 1.6 HDPI устройства в дикой природе. LG имеет пару телефонов, которые соответствуют этому профилю ... У этих людей, вероятно, будет плохой опыт. –

+0

Я ориентируюсь на LDPI/небольшие устройства, такие как HTC Tattoo и SE X10 Mini, которые, к сожалению, оба Android 1.6. –

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

  • Нет связанных вопросов^_^