2013-02-13 2 views
10

Что мне следует ввести в config.xml или что делать в целом, чтобы заставка Splash приложения PhoneGap Build отображалась правильно на Android-устройстве в альбомном режиме?Ландшафтный экран для Android в PhoneGap Build

PhoneGap Build (используется для компиляции) docs/blog ничего не имею. Только портрет предназначен для Android.

С первых (документы) говорит, что с помощью height и width поддерживается кросс-платформенный, я пытался использовать:

<gap:splash src="res/splash-200x320-android.png"    gap:platform="android" gap:density="ldpi" width="200" height="320" /> 
<gap:splash src="res/splash-320x480-android-bada-ios.png" gap:platform="android" gap:density="mdpi" width="320" height="480" /> 
<gap:splash src="res/splash-480x800-android-bada-wp.png"  gap:platform="android" gap:density="hdpi" width="480" height="800" /> 
<gap:splash src="res/splash-720x1280-android.png"   gap:platform="android" gap:density="xhdpi" width="720" height="1280" /> 
<gap:splash src="res/splash-320x200-android.png"    gap:platform="android" gap:density="ldpi" width="320" height="200" /> 
<gap:splash src="res/splash-480x320-android-bada-ios.png" gap:platform="android" gap:density="mdpi" width="480" height="320" /> 
<gap:splash src="res/splash-800x480-android-bada-wp.png"  gap:platform="android" gap:density="hdpi" width="800" height="480" /> 
<gap:splash src="res/splash-1280x720-android.png"   gap:platform="android" gap:density="xhdpi" width="1280" height="720" /> 

Но нет никакого эффекта - в ландшафтном режиме на моем Android устройства Я всегда см. плохой режим версии portait моего экрана.

ответ

8

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

PhoneGap Build (и, возможно, сама PhoneGap) в настоящее время не поддерживает ландшафтные экраны всплеска вообще. Я даже пробовал использовать iOS (как показано в вопросе - с использованием width и height параметров, официально не поддерживаемых для Android). Но это все еще не работает.

Все в порядке в портретном режиме, но независимо от того, какое устройство Android с плотностью экрана вы будете использовать - в ландшафте вы увидите уродливую деформированную портретную версию заставки.

+4

По-видимому, это отслежено [здесь] (https://github.com/phonegap/build/issues/198) –

6

Я не использую PhoneGap Build, но мне удалось исправить это в базовом приложении Android PhoneGap.

Предположим, у вас есть два разных изображения брызг - пейзаж и портретная версия - и вы хотите, чтобы они оба растянулись, чтобы заполнить доступную площадь экрана.

Поместите его в drawable, а другой в drawable-land. (Или drawable-land-hdpi, drawable-land-xhdpi и т.д., если у вас есть несколько размеров.)

Далее, убедитесь, что вы управляете конфиг изменяет себя в AndroidManifest.xml:

<activity 
    ... 
    android:configChanges="orientation|screenSize|keyboardHidden" 
    ... 
> 
</activity> 

Затем поместите это в основной деятельности класс, который простирается DroidGap.java:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    if (super.splashDialog != null) { 
     ViewGroup rootView = (ViewGroup) super.splashDialog.getWindow() 
       .getDecorView().findViewById(android.R.id.content); 
     LinearLayout linearLayout = (LinearLayout) rootView.getChildAt(0); 
     // manually refresh the splash image 
     linearLayout.setBackgroundDrawable(null); 
     linearLayout.setBackgroundResource(R.drawable.mysplash); 
    } 
} 

Это заставит фоновое изображение перерисовывать и правильно растягивать всякий раз, когда пользователь изменяет ориентацию.

+1

Это приятное решение (так +1), но я не собираюсь его принимать, поскольку он тоже слишком не по теме. Идея моего вопроса заключалась в том, чтобы принести ответ, специфичный для PhoneGap Build, то есть, используя только HTML/Javascript и 'config.xml'. У вас нет возможности использовать чистый Java-код в приложениях PhoneGap Build, не так ли? – trejder

+0

@trejder да, вы можете использовать Java-код в приложении PhoneGap. –

+0

@ LarryAasen Нет, вы не можете! Прочитайте мой комментарий. Я говорю о _PhoneGap ** Build ** _. При использовании [PGB] (https://build.phonegap.com/) (создание в облаке) вы ограничены только HTML/Javascript. Вы можете использовать только чистый код Java, если вы строите локально, в своей собственной среде. – trejder

2

Это может быть сделано с апреля 2014 года в PhoneGap построить с помощью gap:qualifer, например

<gap:splash src="portrait-xxhdpi.png" gap:platform="android" gap:qualifier="port-xxhdpi" /> 
<gap:splash src="landscape-xxhdpi.png" gap:platform="android" gap:qualifier="land-xxhdpi" /> 

См this и this статьи для деталей.

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