Включение функции увеличения размера экрана в приложении Phonegap Android не влияет

Мне нужно иметь возможность включать и выключать масштабирование и масштабирование с помощью параметра viewport в моем приложении Android PhoneGap.

Но при использовании PhoneGap я не могу заставить viewport влиять на масштабирование при нажатии. Я не могу включить Pinch-zoom в PhoneGap, но при просмотре с помощью собственного браузера Android на веб-странице все работает нормально.

Я потратил много времени на поиск решения без каких-либо результатов.

Я создал очень простой index.html для тестирования, имея настройки вида просмотра, например:

<meta name="viewport" content="user-scalable=yes" />

Как я уже сказал, я также попробовал viewport:

<meta name="viewport" content="user-scalable=1" />

Другие решения для Android PhoneGap будут включать Android Native Pinch-Zoom, которые были предложены здесь: увеличить размер телефонного звонка для Android. Но это не сработает для меня, так как мне нужно иметь возможность контролировать масштабирование с javascript. То есть Мне нужно иметь возможность использовать javascript для изменения настройки видового экрана, чтобы контролировать, когда доступен масштабируемый zoom (user-scaleable = yes/user-scalable = no)

Обратите внимание, что другие настройки вида просмотра, такие как "начальная шкала" и "target-densitydpi", работают нормально. Например, установка начального масштаба = 2 начинает масштабирование приложения.

(В настоящее время я тестирую pinch-zoom на PhoneGap 1.4.1 и HTC Desire HD Android 2.3.3)

Я начинаю думать, что я пропустил что-то очевидное, так как я нахожу так мало информации о подобных проблемах...

Минимальный index.html:

<!DOCTYPE HTML>
<html>
  <head>
    <meta name="viewport" content="user-scalable=yes" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Minimal AppLaud App</title>
      <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script>
      <script type="text/javascript" charset="utf-8">

        var onDeviceReady = function() {
            document.getElementById("devready").innerHTML = "OnDeviceReady fired.";
        };

        function init() {
            document.addEventListener("deviceready", onDeviceReady, true);
        }   
      </script>  

  </head>
  <body onload="init();" id="stage" class="theme">
    <h2>Minimal AppLaud App</h2>
    <p> LOTS OF TEXT WHICH HAVE BEEN REMOVED HERE </p>

    <p><span id="devready">onDeviceReady not fired.</span></p>

  </body>
</html>

Оцените любые идеи, которые у вас могут быть!

Ответы

Ответ 1

У меня точно такая же проблема, и, помимо тестирования различных параметров видового экрана, я пробовал следующие предложения: Pinch Zoom в Android с Phonegap и jQuery Mobile, но я могу "Это заставило его работать (тестирование на Samsung Galaxy SII, Android 4.0.3). Тем не менее, другие сообщают об успешном масштабировании с помощью подсказок из ссылки. Надеюсь, это тоже поможет!

Ответ 2

Используете ли вы PhoneGap Build? Это невозможно с помощью PhoneGap Build.

С Desktop PhoneGap, если вы еще этого не сделали, следуйте PhoneGap Начало работы с Android Guide и установите код в Eclipse Проект.

После настройки отредактируйте основной файл Java, как в руководстве по началу работы: Добавьте следующие импорты:

import android.webkit.WebSettings; 
import android.webkit.WebSettings.ZoomDensity;

Ниже "super.loadUrl(" file:///android_asset/www/index.html "); который вы ввели, как часть руководства по началу работы, добавьте:

settings.setBuiltInZoomControls(true);
settings.setSupportZoom(true);
settings.setDefaultZoom(ZoomDensity.MEDIUM); 

Очистите и создайте проект - теперь нужно разрешить масштабирование.

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

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, minimum-scale=1, maximum-scale=1.5, user-scalable=1">

Ответ 3

Только что подтвержденный Pinch Zoom работает на следующих телефонах Android:

  • Samsung Galaxy S820L Android 4.4

  • LG Sunset L33L Android 5.0

С CLI PhoneGap (а не службой), в Windows:

C:\>phonegap --version
5.4.1

Android SDK Tools Verion:

24.4.1 (from the SDK Manager)

Вот код для MainActivity.java(платформ\android\src\com\phonegap\helloworld):

package com.phonegap.helloworld;

import android.os.Bundle;
import org.apache.cordova.*;

import android.webkit.WebView;
import android.webkit.WebSettings;

public class MainActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);

        WebView webView = (WebView) appView.getEngine().getView();
        WebSettings settings = webView.getSettings();

        settings.setBuiltInZoomControls(true);
        settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);
        settings.setSupportZoom(true);
    }
}

И это в index.html:

 <meta name="viewport" content="user-scalable=yes, initial-scale=1, maximum-scale=3, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

Еще одно примечание - с помощью этого вызова:

settings.setDefaultZoom(WebSettings.ZoomDensity.MEDIUM);

получил это при построении:

uses or overrides a deprecated API - Note: Recompile with -Xlint:deprecation for details

Прокомментировал это, и Zoom не повлиял.

Спасибо, ребята!!!

Ответ 4

Кто бы ни даже после этого не нашел решения, я нашел ответ в Github:

https://github.com/LouisT/cordova-useragent/issues/1

В основном вы должны:

import android.webkit.WebView;

А потом:

// super.appView.getSettings().setBuiltInZoomControls(true);
// super.appView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM); 
// super.appView.getSettings().setSupportZoom(true);
// Instead use this
WebView webView = (WebView) appView.getEngine().getView();
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setDefaultZoom(ZoomDensity.MEDIUM);
settings.setSupportZoom(true);

Ответ 5

Для cordova 5.x.x вам нужно использовать решение из https://github.com/LouisT/cordova-useragent/issues/1

import android.webkit.WebView;

WebView webView = (WebView) appView.getEngine().getView();
WebSettings settings = webView.getSettings();
settings.setBuiltInZoomControls(true);
settings.setDefaultZoom(ZoomDensity.MEDIUM);
settings.setSupportZoom(true);

Для меня потребовалось изменить ZoomDensity.MEDIUM на WebSettings.ZoomDensity.MEDIUM

Ответ 6

Документ html5 должен начинаться с:

<!DOCTYPE html>

Без этой строки не работает приложение AppBrowser в приложении Phonegap Android