javascript - Android:如何在加载资源时显示动画启动画面

标签 javascript android html cordova

我想在加载资源时将动画图像(当前使用一组 PNG)显示为启动画面。

我已经能够使用 this 显示启动画面.但问题是:初始屏幕显示指定时间,然后黑屏 2-3 秒,然后加载 index.html

理想情况下,我想要的是在加载资源时显示启动画面。加载资源后,拉动初始屏幕并立即加载 index.html 文件。

下面是我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // Splash screen view
    setContentView(R.layout.splash);

    // Start animating the image
    final ImageView splashImageView = (ImageView) findViewById(R.id.SplashImageView);
    splashImageView.setBackgroundResource(R.drawable.flag);
    final AnimationDrawable frameAnimation = (AnimationDrawable)splashImageView.getBackground();
    splashImageView.post(new Runnable(){
        @Override
        public void run() {
            frameAnimation.start();             
        }           
    });


    final SplashScreen sPlashScreen = this;   

    // The thread to wait for splash screen events
    mSplashThread =  new Thread(){
        @Override
        public void run(){
            try {
                synchronized(this){
                    // Wait given period of time or exit on touch
                    wait(10000);
                }
            } 
            catch(InterruptedException ex){                 
            }

            finish();

            // Run next activity
            Intent intent = new Intent();
            intent.setClass(sPlashScreen, SomeActivity.class);
            startActivity(intent);
            //stop();               
        }
    };      
    mSplashThread.start();      
} 

public class SomeActivity extends DroidGap {                
    @Override
    public void onCreate(Bundle savedInstanceState) {    
     //some code to copy database files.
    }
}

请注意我的开发环境。 android-sdk:api 级别 17,Phonegap:2.1.0。

最佳答案

这可以通过 Phonegap/Cordova 1.7 版本来解决。当您使用 2.1 时,您也可以使用此解决方案。

在您的主要 Phonegap Activity 类中,初始化初始屏幕和 loadURL 方法:

super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl("file:///android_asset/www/index.html", 10000);

10000 是以毫秒为单位的时间,因此启动图像将在接下来的 10 秒内可见。你甚至可以使用 30-60。稍后我会解释原因。

为了在 PhoneGap Android 应用程序中有启动画面,您需要将 splash.png 文件放入:

res/drawable-ldpi (small: at least 426 x 320)
res/drawable-mdpi (medium: at least 470 x 320)
res/drawable-hdpi (large: at least 640 x 480) 
res/drawable-xdpi (xlarge: at least 960 x 720)

现在最主要的是:在您的 Javascript 中添加 deviceready 事件,如下所示:

document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
    // Version 1.7 use this method
    cordova.exec(null, null, "SplashScreen", "hide", []);
    // Version 1.8+ use this mehod
    navigator.splashscreen.hide();

因此,即使初始屏幕仍然可见,navigator.splashscreen.hide(); 也会隐藏它并显示加载的 html。

希望对你有帮助。

关于javascript - Android:如何在加载资源时显示动画启动画面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988266/

相关文章:

javascript - 如何更改列表项的CSS内容属性

html - Oracle 到 Excel - PL/SQL 导出程序

html - 如何将 CSS 仅应用于某个类的直接子级

javascript - Angular JS。启动秒表到所选项目

android - 动态更改警报对话框中的按钮文本

javascript - 函数内的变量困惑

android - 如何在 Android 中为按钮启用音效

android - Firebase RemoteMessage 已填充 Bundle 但 getData() 为空

javascript - 停止 onclick 的后续方法调用

javascript - 如何使用 jquery 在新选项卡中使用 'POST' 进行重定向?