2013-02-13 5 views
10

에 입력해야하는 항목 또는 일반적으로 수행해야하는 작업 PhoneGap Build 애플리케이션의 스플래시 화면이 가로 모드에서 Android 기기에 올바르게 표시되게하려면 어떻게해야합니까?PhoneGap에서 Android 용 가로 스플래시 화면 빌드

PhoneGap 빌드 (컴파일하는 데 사용) docs/blog 아무 것도 없습니다. Android 용 인물 만 인물입니다. - 내 안드로이드 장치 항상 I에 가로 모드에서

<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" /> 

을하지만 아무런 효과가 없다 :

첫 번째 (문서) 이후

는 크로스 플랫폼이 지원 heightwidth를 사용하여, 내가 그것을 사용하려고 말한다 내 스플래시 화면의 심하게 strechead 초상화 모드 버전을 참조하십시오.

답변

8

현재의 지식과 심층 연구를 통해 확인 된 버그이며 현재이 문제에 관해서는 아무 것도 할 수 없습니다.

PhoneGap Build (PhoneGap 자체도 가능)는 현재 가로 스플래시 화면을 전혀 지원하지 않습니다. 심지어 iOS 방식으로 시도했는데 (질문에 나온 것처럼 - widthheight 매개 변수는 공식적으로 Android에서 지원되지 않음). 하지만 여전히 작동하지 않습니다.

모두 세로 모드에서는 괜찮지 만, 사용하는 화면 밀도에 관계없이 가로로 보면 스플래시 화면의 변형 된 세로보기 버전이 보일 것입니다.

+4

분명히 여기에 추적됩니다 (https://github.com/phonegap/build/issues/198) –

6

PhoneGap Build를 사용하고 있지 않지만 기본 PhoneGap Android 앱에서이 문제를 해결할 수있었습니다.

두 개의 서로 다른 스플래시 이미지 (가로 및 세로 버전)가 있고 사용 가능한 화면 영역을 채우기 위해 둘 다 늘리 길 원한다고 가정 해 보겠습니다.

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 '만 사용하십시오. PhoneGap Build apps에서 순수 자바 코드를 사용할 능력이 없다. 그렇지 않습니까? – trejder

+0

@trejder 예, PhoneGap 앱에서 Java 코드를 사용할 수 있습니다. –

+0

@LarryAasen 아니, 할 수 없어! 내 의견을 읽으십시오. 나는 전화에 대해 이야기하고있다. [PGB] (https://build.phonegap.com/) (클라우드에서 제작)를 사용하는 경우 HTML/자바 스크립트로만 제한됩니다. 자신의 환경에서 로컬로 빌드하는 경우 순수 Java 코드 만 사용할 수 있습니다. – trejder

2
그것은 gap:qualifer를 사용하여 빌드 폰갭 년 4 월 2014 년부터 수행 할 수 있습니다

, 예를 들어

<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" /> 

은 자세한 내용은 thisthis 기사를 참조하십시오.