我是全新的科尔多瓦,并试图让闪屏在 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的任何数字)
