Android上没有显示Cordova启动画面

时间:2016-02-05 12:39:45

标签: android cordova

我是Cordova的全新品牌,我正试图在Android上使用闪屏。我已经按照一些教程写了这封信,并在这里回顾了问题,但它还没有工作。

我正在使用' 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屏幕。

我做过其他地方建议的所有事情 - 你们有没有发现错误?

仅供参考我正在查看/ 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);
    }
}

2 个答案:

答案 0 :(得分:3)

我也在这个问题上挣扎了很长时间,发现问题出现在SplashScreenDelayFadeSplashScreenDuration的值中。

如果查看SplashScreen.java,您会发现showSplashScreen函数执行以下操作:

final int fadeSplashScreenDuration = getFadeDuration();
final int effectiveSplashDuration = Math.max(0, splashscreenTime - fadeSplashScreenDuration);

在您的配置中,您已将SplashScreenDelay设置为2000毫秒。

getFadeDuration查找FadeSplashScreenDuration元素,未找到时(在本例中)回退到默认DEFAULT_SPLASHSCREEN_DURATION,即3000毫秒,导致{的值为负值{1}}。显然,这将导致不显示闪屏。

所以解决方案是

  • 在配置中添加effectiveSplashDuration元素,其值设置为0.(或任何数字小于> 2000)
  • FadeSplashScreenDuration的值增加到4000(或任何数字更大超过3000)

答案 1 :(得分:0)

尝试在cofig.xml文件中使用它。

{
  "flux" : {
    "name" : "flux"
  },
  "react" : {
    "name" : "React"
  }
}

这可能会解决您的问题。