Arhn - архитектура программирования

Как исправить масштабирование области просмотра с помощью JQuery Mobile на устройствах Android HDPI

Я считаю, что страницы JQuery Mobile хорошо выглядят на устройствах MDPI (например, G1), но они выглядят очень маленькими на устройствах HDPI (например, Samsung Galaxy S).

Вот изображение из эмулятора Android с разрешением 320x480 и 160 dpi:

mdpi

Вот изображение из эмулятора Android с разрешением 480x800 и 240 dpi:

hdpi

Чтобы увидеть диспропорции, сравните размер текста JQuery с размером собственного интерфейса Android (часы).

ОТРЕДАКТИРОВАНО: скриншоты, сделанные со следующими настройками области просмотра:

<meta name="viewport" content="initial-scale=1, width=device-width, target-densitydpi=device-dpi"/>

26.12.2011

Ответы:


1

Из JQM версии 1.1 хак с уровнем масштабирования больше не работает, потому что масштабирование отключено JQM.

Содержимое страницы meta[name='viewport'] после запуска активности и загрузки первой страницы:

начальное значение initial-scale=1

JQM 1.0.1 начальная шкала=1

JQM 1.1.0 начальный масштаб = 1, максимальный масштаб = 1, масштабируемый пользователем = нет

Таким образом, решение состоит в том, чтобы удалить плотность dpi=device-dpi из содержимого мета[name='viewport'], потому что это препятствует собственному масштабированию, выполняемому Android (см. подробное объяснение на http://developer.android.com/guide/webapps/targeting.html, раздел Определение целевой плотности области просмотра).

22.05.2012

2

Самый эффективный способ обеспечить согласованность размеров экрана на устройствах Android — изменить уровень масштабирования WebView, загружающего ваше (веб)приложение. Это не требует изменений кода на уровне HTML.

public class YourApp extends DroidGap {
    /** Called when the activity is first created. */

    // declare the original size of the iPad app
    protected float ORIG_APP_W = 320;
    protected float ORIG_APP_H = 480;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        super.loadUrl("file:///android_asset/www/index.html", 3000);

        // get actual screen size
        Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int width = display.getWidth(); 
        int height = display.getHeight(); 

        // calculate target scale (only dealing with portrait orientation)
        double globalScale = Math.ceil( ( width / ORIG_APP_W ) * 100 );

        // make sure we're all good
        Log.v( TAG, "ORIG_APP_W" + " = " + ORIG_APP_W );
        Log.v( TAG, "ORIG_APP_H" + " = " + ORIG_APP_H );
        Log.v( TAG, "width" + " = " + width );
        Log.v( TAG, "this.appView.getMeasuredHeight() = " + height );
        Log.v( TAG, "globalScale = " + globalScale );
        Log.v( TAG, "this.appView.getScale() index=" + this.appView.getScale() );

        // set the scale
        this.appView.setInitialScale( (int)globalScale );
    }
}
23.03.2012

3

Да, разрешения не пропорциональны устройствам, которые вы упомянули, верно?

т.е. 320:480 не то же самое, что 480:800

Устройство пропорционально увеличило ширину и высоту вашего приложения, что оставляет пустое место в компоненте высоты.

Так что это не имеет ничего общего с jQuery как таковым, просто ваше приложение нуждается в улучшении дизайна для поддержки устройств высокого класса.

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

Добавьте полезный контент, чтобы заполнить высоту для устройств с высоким разрешением. Чтобы объяснить на уровне кода, у меня был дополнительный контент внутри div с идентификатором moreContentForHighEndDevices, и я использовал медиа-запросы CSS для его условного отображения, как показано ниже:

#moreContentForHighEndDevices {
    display:none;
}

@media screen and (-webkit-device-pixel-ratio: 1.5) {
    #moreContentForHighEndDevices {
        display: block;
    }
}
24.02.2012
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..