在PhoneGap Build中安卓风景启动画面

时间:2013-02-13 00:03:10

标签: cordova landscape phonegap-build splash

要在横向模式下在Android设备上正确显示PhoneGap Build应用程序的启动画面,我应该输入config.xml或我应该做些什么?

PhoneGap Build(用于编译)docs / blog对此一无所知。只有Portrait适用于Android。

由于第一个(docs)说使用heightwidth支持跨平台,我尝试使用它:

<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设备上的横向模式中,我总是看到我的启动画面的strechead portait模式版本很糟糕。

3 个答案:

答案 0 :(得分:8)

根据我目前的知识和深入研究后,我发现这是一个确认的错误,我们目前无法做任何事情。

PhoneGap Build(也可能是PhoneGap本身)目前根本不支持横向启动画面。我甚至尝试过iOS方式(如问题所示 - 使用widthheight参数,官方不支持Android)。但它仍然无效。

在纵向模式下一切都很好,但无论你使用什么屏幕密度的Android设备 - 在风景中你都会看到丑陋的变形肖像版的闪屏。

答案 1 :(得分:6)

我没有使用PhoneGap Build,但我设法在一个基本的PhoneGap Android应用中解决了这个问题。

假设您有两个不同的初始图像 - 横向图像和纵向版本 - 并且您希望它们都可以拉伸以填充可用的屏幕区域。

将一个放在drawable中,另一个放在drawable-land中。 (或drawable-land-hdpidrawable-land-xhdpi等,如果您有多种尺寸。)

接下来,请确保您在AndroidManifest.xml

中自行管理配置更改
<activity
    ...
    android:configChanges="orientation|screenSize|keyboardHidden"
    ...
>
</activity>

然后将其放在扩展DroidGap.java的主要Activity类中:

@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);
    }
}

这将导致背景图像重绘并在用户更改方向时正确拉伸。

答案 2 :(得分:3)

Phonegap Build现在使用Cordova configuration style。指定density时,请附加port-land-以指定纵向或横向:

<splash src="portrait-ldpi.png" density="port-ldpi"/>
<splash src="landscape-ldpi.png" density="land-ldpi"/>

旧配置样式

自2014年4月起,可以使用gap:qualifer在Phonegap Build中完成,例如

<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文章。