我是全新的科尔多瓦,并试图让闪屏在 Android上工作.我已经遵循了这封信的几个教程,并已经在这里审查了关于SO的问题,但它还没有工作. 我使用’Cordova CLI’方法 – 这是我的/config.xml:
我使用’Cordova CLI’方法 – 这是我的/config.xml:
<?xml version='1.0' encoding='utf-8'?> <widget id="com.example.hello" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <name>HelloWorld</name> <preference name="SplashScreen" value="screen" /> <preference name="SplashScreenDelay" value="2000" /> <description> A sample Apache Cordova application that responds to the deviceready event. </description> <author email="dev@cordova.apache.org" href="http://cordova.io"> Apache Cordova Team </author> <content src="index.html" /> <plugin name="cordova-plugin-whitelist" spec="1" /> <access origin="*" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <allow-intent href="tel:*" /> <allow-intent href="sms:*" /> <allow-intent href="mailto:*" /> <allow-intent href="geo:*" /> <platform name="android"> <allow-intent href="market:*" /> <splash src="res/screen/android/splash-logo.png" density="land-hdpi"/> <splash src="res/screen/android/splash-logo.png" density="land-ldpi"/> <splash src="res/screen/android/splash-logo.png" density="land-mdpi"/> <splash src="res/screen/android/splash-logo.png" density="land-xhdpi"/> <splash src="res/screen/android/splash-logo.png" density="port-hdpi"/> <splash src="res/screen/android/splash-logo.png" density="port-ldpi"/> <splash src="res/screen/android/splash-logo.png" density="port-mdpi"/> <splash src="res/screen/android/splash-logo.png" density="port-xhdpi"/> <icon density="ldpi" src="res/screen/android/icon.png" /> <icon density="mdpi" src="res/screen/android/icon.png" /> <icon density="hdpi" src="res/screen/android/icon.png" /> <icon density="xhdpi" src="res/screen/android/icon.png" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> </widget>
我知道每个密度我应该有不同的图像大小,但这是一个测试项目,所以请忽略.
我已经将cordova-plugin-splashscreen添加到我的项目中.
cordova plugin add cordova-plugin-splashscreen
闪屏仍然没有显示 – 而是当应用程序在仿真器上运行时,黑屏会显示.几秒钟后,黑色屏幕会消失,出现默认的“设备就绪”Cordova屏幕.
我在其他地方做过一切建议 – 你们会发现什么问题吗?
FYI我正在看/ plataforms目录,它似乎正确设置.
下面的代码片段来自/platforms/android/res/xml/config.xml:
<splash density="land-hdpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="land-ldpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="land-mdpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="land-xhdpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="port-hdpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="port-ldpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="port-mdpi" src="res/drawable-land-xhdpi/screen.png" /> <splash density="port-xhdpi" src="res/drawable-land-xhdpi/screen.png" /> <icon density="ldpi" src="res/screen/android/icon.png" /> <icon density="mdpi" src="res/screen/android/icon.png" /> <icon density="hdpi" src="res/screen/android/icon.png" /> <icon density="xhdpi" src="res/screen/android/icon.png" />
在上面列出的每个目录下都有screen.png文件 – 所以似乎Cordova正在正常工作.
主要活动:
package com.example.hello; import android.os.Bundle; import org.apache.cordova.*; public class MainActivity extends CordovaActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set by <content src="index.html" /> in config.xml loadUrl(launchUrl); } }我在这个问题上也遇到了一段时间,并发现SplashScreenDelay和FadeSplashScreenDuration的值是问题.
如果您查看SplashScreen.java,您会发现showSplashScreen函数执行以下操作:
final int fadeSplashScreenDuration = getFadeDuration(); final int effectiveSplashDuration = Math.max(0, splashscreenTime - fadeSplashScreenDuration);
在您的配置中,您将SplashScreenDelay设置为2000 ms.
getFadeDuration查找FadeSplashScreenDuration元素,如果没有找到(在这种情况下),则返回到默认的DEFAULT_SPLASHSCREEN_DURATION(为3000 ms),从而导致有效的片段设置为负值.显然这将导致没有显示闪屏.
所以解决方案是
>将FadeSplashScreenDuration元素添加到配置中,值设置为0.(或任何小于2000的数字)>将SplashScreenDelay的值增加到4000(或大于3000的任何数字)