要在横向模式下在Android设备上正确显示PhoneGap Build应用程序的启动画面,我应该输入config.xml
或我应该做些什么?
PhoneGap Build(用于编译)docs / blog对此一无所知。只有Portrait适用于Android。
由于第一个(docs)说使用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设备上的横向模式中,我总是看到我的启动画面的strechead portait模式版本很糟糕。
答案 0 :(得分:8)
根据我目前的知识和深入研究后,我发现这是一个确认的错误,我们目前无法做任何事情。
PhoneGap Build(也可能是PhoneGap本身)目前根本不支持横向启动画面。我甚至尝试过iOS方式(如问题所示 - 使用width
和height
参数,官方不支持Android)。但它仍然无效。
在纵向模式下一切都很好,但无论你使用什么屏幕密度的Android设备 - 在风景中你都会看到丑陋的变形肖像版的闪屏。
答案 1 :(得分: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
的主要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" />