显示自动适合的启动画面图像

Tel*_*ian 22 android splash-screen aspect-ratio xamarin.android

我使用以下样式显示用MonoDroid编写的Android应用程序的启动画面.然而,它似乎采取图像并最大化它以适应整个屏幕,同时搞乱了纵横比.因此,图像看起来巨大而可怕.

有没有办法让它最大化,但保持纵横比,所以它看起来仍然很好?

<style name="Theme.Splash" parent="android:Theme">
  <item name="android:windowBackground">@drawable/splashscreenimage</item>
  <item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这是C#中的活动,它创建启动画面并转到登录.

  [Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
  public class SplashScreenActivity : Activity
  {
    protected override void OnCreate(Bundle bundle)
    {
      base.OnCreate(bundle);

      // Start our real activity
      StartActivity(typeof(LoginActivity));
    }
  }
Run Code Online (Sandbox Code Playgroud)

pro*_*eek 32

Android中有几种类型的drawable,包括实际位图,九个补丁和XML文件.尝试使用XML文件包装图像文件,该文件为其提供属性,然后将XML文件用作drawable而不是源图像.

假设您的xml文件名为scaled_background,原始图像只是background.png:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
android:src="@drawable/background" />
Run Code Online (Sandbox Code Playgroud)

@drawable/background可以将其设置为引用XML文件@drawable/scaled_background,而不是将背景设置为引用:在此示例中.有关缩放模式的详细信息,请参阅Drawable文档.

  • _尝试用一个赋予它属性的 XML 文件包装你的图像文件_你能举个例子吗?如何将矢量可绘制对象包装在 XML 文件中? (6认同)
  • 当然,使用图层列表:)`<?xml version ="1.0"encoding ="utf-8"?> <layer-list xmlns:android ="http://schemas.android.com/apk/res/android" > <item android:drawable ="@ color/white"/> <item> <bitmap xmlns:android ="http://schemas.android.com/apk/res/android"android:gravity ="bottom | center_horizo​​ntal" android:scaleGravity =""android:src ="@ drawable/background_splash"android:tileMode ="disabled"/> </ item> </ layer-list> (3认同)

Kau*_* NP 7

它似乎采取了图像并最大化它以适应整个屏幕,同时弄乱了纵横比.因此,图像看起来巨大而可怕.

有没有办法让它最大化,但保持纵横比,所以它看起来仍然很好?

图像放大的原因是因为您使用的图像的像素高于您正在测试应用程序的设备屏幕的分辨率.为了解决这个问题,最好的方法是为不同的设备屏幕创建适当大小(像素)的图像然后相应地将它们放在可绘制文件(drawable-ldpi,drawable-mdpi,drawable-hdpi等)中.

以下是Google提供的各种显示器的最小屏幕尺寸列表(以像素为单位): -


适用于Android移动设备

LDPI- 426 x 320

MDPI- 470 x 320

HDPI-640 x 480

XHDPI- 960 x 720


适用于Android平板电脑设备

LDPI-200 x 320

MDPI-320 x 480

HDPI-480 x 800

XHDPI- 720 x 1280


现在在res/drawable中创建一个XML drawable,它将在主题(Theme.Splash)中使用提供splash活动的背景layer-list.加载图像<bitmap>并使用gravity属性进行中心对齐.

<!-- background_splash.xml -->
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:drawable="@color/gray"/>

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/splashscreenimage"/>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

现在修改您的样式 (Theme.Splash)并将background_splash.xml设置为主题中的splash活动的背景.

<style name="Theme.Splash" parent="android:Theme">
    <item name="android:windowBackground">@drawable/background_splash.xml</item>
    <item name="android:windowNoTitle">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这样,图像应设置在中心,保持纵横比.

注意:对于图像大小调整,您可以使用Adobe Photoshop(我发现它更容易使用).必须进行一些实验才能获得所需的正确图像大小.

根据偏好,您还可以使用9 Patch图像,以便图像的边框可以拉伸以适应屏幕的大小,而不会影响图像的静态区域.


参考链接:

建立启动画面: https ://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd

启动画面图像大小: ldpi,mdpi,hdpi,xhdpi显示的android启动画面大小? - 例如:ldpi为1024X768像素

  • 对于API 23+,您应该使用`<item android:gravity ="center">`而不是`<bitmap android:gravity ="center"` (3认同)