当前位置 : 主页 > 手机开发 > cordova >

Cordova闪屏未在Android上显示

来源:互联网 收集:自由互联 发布时间:2021-06-10
我是全新的科尔多瓦,并试图让闪屏在 Android上工作.我已经遵循了这封信的几个教程,并已经在这里审查了关于SO的问题,但它还没有工作. 我使用’Cordova CLI’方法 – 这是我的/config.xml:
我是全新的科尔多瓦,并试图让闪屏在 Android上工作.我已经遵循了这封信的几个教程,并已经在这里审查了关于SO的问题,但它还没有工作.

我使用’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的任何数字)

网友评论