Android 启动画面不适用于 Cordova 5.0.0
Posted
技术标签:
【中文标题】Android 启动画面不适用于 Cordova 5.0.0【英文标题】:Android Splash Screen not working with Cordova 5.0.0 【发布时间】:2015-08-22 10:52:02 【问题描述】:我无法加载启动画面图像?它闪烁白色,然后变黑,几秒钟后应用程序加载。我的config.xml如下:
我正在使用面向 android 的 Cordova 5.0.0 进行构建。我已将我的应用从成功构建的 PhoneGap 移植过来,并且启动画面可以正常工作。
config.xml
<platform name="android">
<splash src="www/images/openingscenehdpi.png" density="hdpi"/>
<splash src="www/images/openingsceneldpi.png" density="ldpi"/>
<splash src="www/images/openingscenemdpi.png" density="mdpi"/>
<splash src="www/images/openingscenexhdpi.png" density="xhdpi"/>
<preference name="android-minSdkVersion" value="14"/>
<preference name="android-targetSdkVersion" value="19"/>
<preference name="SetFullscreen" value="true"/>
<preference name="orientation" value="landscape"/>
</platform>
在阅读了所有其他类似问题后,我尝试了以下方法均未成功,但均未改变应用行为:
标签内只有启动元素 在平台标签内外添加首选项 name="SplashScreen" value="screen" 在平台标签内外添加首选项 name="SplashScreen" value="splash" 将文件直接添加到位于platforms/android/res 的文件夹中 将 spashscreen javscipt 添加到 index.html 中
我已经按照文档并尝试了其他人的建议,现在我完全被难住了..
谁能帮忙?
【问题讨论】:
你没有解释问题。 我的意思是,您实际上想要实现什么?你的帖子还不清楚 哦,现在我明白了。那么在启动后检查你的首页,它可能有一些需要时间来加载的东西。最佳做法是在页面加载后加载资源。 你添加了闪屏插件 不要不使用启动画面插件,我想使用 config.xml 保持简单,它与 PhoneGap 很好地配合,文档说它应该工作但不适合我:-(。 【参考方案1】:已修复! 缺少文档,您必须安装插件:
cordova plugin add cordova-plugin-splashscreen
在项目的根目录下有一个 res 文件夹,其中包含正确文件夹中的文件(config.xml 旁边)以及 config.xml 中的以下内容:
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="5000" />
<preference name="SplashMaintainAspectRatio" value="true|false" />
<platform name="android">
<splash src="res/drawable-hdpi/screen.png" density="hdpi"/>
<splash src="res/drawable-ldpi/screen.png" density="ldpi"/>
<splash src="res/drawable-mdpi/screen.png" density="mdpi"/>
<splash src="res/drawable-xhdpi/screen.png" density="xhdpi"/>
<splash src="res/drawable-xhdpi/screen.png" density="xxhdpi"/>
<splash src="res/drawable-xhdpi/screen.png" density="xxxhdpi"/>
</platform>
【讨论】:
【参考方案2】:基于@Ben Jones 的回答,我添加了以下 javascript 以在我知道可以安全显示 HTML 内容的应用程序中隐藏启动画面。如果省略此步骤,则启动屏幕将显示任意时间(示例 XML 中为 5 秒)。
navigator.splashscreen.hide();
脚注:我在本地浏览器中测试我的应用程序,所以我也会检查插件是否存在,但这是可选的:
if (navigator.splashscreen)
navigator.splashscreen.hide();
【讨论】:
【参考方案3】:我尝试了此页面中的解决方案,但仍然不适合我。我不知道是不是因为我的 Android 或 Cordova 版本。我尝试和工作的(前两个步骤与此问题中的其他解决方案类似,区别在于第 3rd 点):
安装闪屏插件:
cordova plugin add cordova-plugin-splashscreen
在onDeviceReady
函数的开头添加这一行:
navigator.splashscreen.show();
以及同一函数末尾的这一行(所有加载完成后):
navigator.splashscreen.hide();
定义指示横向或纵向的每个密度启动屏幕(在我的情况下,我对所有这些都使用相同的图像):
<splash src="www/img/splash.png" density="land-hdpi"/>
<splash src="www/img/splash.png" density="land-ldpi"/>
<splash src="www/img/splash.png" density="land-mdpi"/>
<splash src="www/img/splash.png" density="land-xhdpi"/>
<splash src="www/img/splash.png" density="port-hdpi"/>
<splash src="www/img/splash.png" density="port-ldpi"/>
<splash src="www/img/splash.png" density="port-mdpi"/>
<splash src="www/img/splash.png" density="port-xhdpi"/>
这是config.xml
文件在与启动屏幕相关的部分中的外观:
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="5000" />
<preference name="FadeSplashScreen" value="false"/>
<platform name="android">
<allow-intent href="market:*" />
<splash src="www/img/splash/splash.png" density="land-hdpi"/>
<splash src="www/img/splash/splash.png" density="land-ldpi"/>
<splash src="www/img/splash/splash.png" density="land-mdpi"/>
<splash src="www/img/splash/splash.png" density="land-xhdpi"/>
<splash src="www/img/splash/splash.png" density="port-hdpi"/>
<splash src="www/img/splash/splash.png" density="port-ldpi"/>
<splash src="www/img/splash/splash.png" density="port-mdpi"/>
<splash src="www/img/splash/splash.png" density="port-xhdpi"/>
</platform>
(并且闪屏在5秒之前被隐藏,因为我在onDeviceReady
函数的末尾隐藏了它)
【讨论】:
以上是关于Android 启动画面不适用于 Cordova 5.0.0的主要内容,如果未能解决你的问题,请参考以下文章
Cordova 插件 Geolocation 不适用于 Android 版本 Kitkat
Cordova 文件插件不适用于 android sdk 30
Cordova 相机插件适用于模拟器,而不适用于 Android 设备