Включение функции увеличения размера экрана в приложении 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:
С 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