【问题标题】:Phonegap splash screen for android: not stretched or 9patchAndroid 的 Phonegap 启动画面:未拉伸或 9patch
【发布时间】:2012-02-09 02:22:53
【问题描述】:

我的 phonegap 应用启动时会弹出一个虚假的初始屏幕:

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

我目前有 3 个不同的 splash.png 文件:hdpi、mdpdi 和 ldpi。我的问题是,即使在 hdpi 中,您也会得到 480 x 800 和其他 480 x 854 的设备,并且 android 会拉伸我的启动图像以填满屏幕。

我更希望图像保持其纵横比。根据我的阅读,9 补丁解决方案不适用于 PhoneGap。如果会,请告诉我如何!我已经准备好 .9.png 了。 所以我能想到的另一个解决方案是防止android拉伸我的图像。我该怎么做?

谢谢!

【问题讨论】:

标签: cordova screen stretch splash-screen nine-patch


【解决方案1】:

9 补丁解决方案确实适用于 PhoneGap 中的闪屏 :-)

  1. 通过创建一个xml文件定义一个新的drawable资源,即res/drawable/splash.xml,内容如下:

    <nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/splashimg" 
    android:dither="false"/>;  
    

    注意它是如何引用真实图像“splashimg”的,该图像应该是九个补丁图像(见下文)。

  2. 创建九个补丁图像

  3. 在 res/drawable 或分辨率特定文件夹中添加引用的九个补丁图像 例如res/drawable/splashimg.9.png

  4. 在你的 DroidGap 扩展类中引用新的 drawable

    public void onCreate(Bundle savedInstanceState) {
    
        super.setIntegerProperty("splashscreen", R.drawable.splash);
    
    }
    

通过这种方式,您实际上可以利用 android 中可绘制资源的强大功能制作各种背景图像/效果。请参阅http://developer.android.com/guide/topics/resources/drawable-resource.html 了解更多信息。

【讨论】:

  • 有什么方法可以在 PhoneGap 构建中使用它吗?
  • @will:不。我从来没有。
  • 对于 PG > 3.0 而不是扩展类,现在在 config.xml 中使用这个设置: 此设置使用 splash-9.png。
【解决方案2】:

无需提bug,有一个解决方案:只需将以下 splash.xml 放在 res/drawable 中(修改 android:src 属性)并更改对 R.drawable 的引用.splash,在 setIntegerProperty() 调用中。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@drawable/splashImage"
  android:gravity="center_horizontal|center_vertical" />

有关设置的更详细说明,请参阅我的Blog

【讨论】:

  • 这对我不起作用,但因为它已经获得了 4 票,所以它可能是正确的。然而,罗伯特的回答确实很好。
  • 这行不通。在您使用图像的地方,某些边界上总是存在间隙。它不适用于九个补丁图像。
【解决方案3】:

对于那些使用phonegap 3.0的人,您不需要制作splash.xml,您只需参考以下图片:

super.setIntegerProperty("splashscreen", R.drawable.nameoftheninepatch);

如果它被拉伸,请按照 DeadPassive 的注释:

重要提示:这些图片必须有填充框(右下角 边框)完全填充黑色或您的phonegap区域 应用程序可能会以一种奇怪的方式被拉伸。

【讨论】:

  • 感谢 phonegap 3 note
【解决方案4】:

我希望这篇文章会有所帮助,这是我第一次在 Stack Overflow 上。该解决方案基于提供两个启动屏幕,设置一个合适的屏幕,锁定方向并在几秒钟后解锁它,此时启动屏幕被隐藏。 :)

其他解决方案的问题:

  • 居中图像:如果您不希望启动画面全屏显示,这是一个可行的解决方案。添加 android:tileMode="clamp" 时,我发现如果设置了 android:tileMode,Android 会忽略 android:gravitiy。
  • 九块图像:这个概念很容易理解,但不知何故,我无法将我的图像(中间有徽标)转换为九块图像,从而在缩放时保持徽标居中。
公共类 myApp 扩展 DroidGap
{
    私有类 TimerRunnable 实现 Runnable
    {
        @Override public void run()
        {
            //解锁方向
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        }
    }

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

        // 设置启动画面和锁定方向
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE)
        {
            super.setIntegerProperty("splashscreen", R.drawable.splashscreen_landscape);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
        }
        否则 // ORIENTATION_PORTRAIT 和 ORIENTATION_UNDEFINED
        {
            super.setIntegerProperty("splashscreen", R.drawable.splashscreen_portrait);
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
        }

        // 启动计时器
        处理器 timerHandler = new Handler();
        timerHandler.postDelayed(new TimerRunnable(), 5000);

        // 显示启动画面
        super.loadUrl(Config.getStartUrl(), 5000);
    }
}

【讨论】:

    【解决方案5】:

    创建您的启动画面,将其命名为例如:“bitmap.png”

    然后在文件夹 res/drawable 中创建“splash.xml”

    <?xml version="1.0" encoding="utf-8"?>
         <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
              android:src="@drawable/bitmap"
              android:gravity="center_horizontal|center_vertical" />
    

    在您的活动中,输入以下代码:

    super.setIntegerProperty( "splashscreen", R.drawable.splash );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多