我使用以下样式显示用MonoDroid编写的Android应用程序的启动画面。然而,它似乎采取图像并最大化它以适应整个屏幕,同时搞乱了纵横比。因此,图像看起来巨大而可怕。
有没有办法让它最大化,但保持纵横比,所以它看起来仍然很好?
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@drawable/splashscreenimage</item>
<item name="android:windowNoTitle">true</item>
</style>
这是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));
}
}
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" />
您可以将其设置为引用XML文件:@drawable/background
,而不是将您的背景设置为引用@drawable/scaled_background
。有关缩放模式的详细信息,请参阅Drawable documentation。
它似乎采取了图像并最大化它以适应整个屏幕,同时弄乱了纵横比。因此,图像看起来巨大而可怕。
有没有办法让它最大化,但保持纵横比,所以它看起来仍然很好?
图像放大的原因是因为您使用的图像的像素高于您正在测试应用程序的设备屏幕的分辨率。为了解决这个问题,最好的方法是为不同的设备屏幕创建适当大小(像素)的图像然后将它们放在可绘制文件(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,它将使用layer-list
在主题(Theme.Splash)中提供splash活动的背景。图像在<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>
现在修改您的样式(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>
这样,图像应设置在中心,保持纵横比。
注意:对于图像大小调整,您可以使用Adobe Photoshop(我发现它更容易使用)。必须进行一些实验才能获得所需的正确图像大小。
根据偏好,您还可以使用9 Patch图像,以便图像的边框可以拉伸以适应屏幕的大小,而不会影响图像的静态区域。
参考链接:
建筑飞溅屏幕:https://plus.google.com/+AndroidDevelopers/posts/Z1Wwainpjhd
启动画面图像尺寸:android splash screen sizes for ldpi,mdpi, hdpi, xhdpi displays ? - eg : 1024X768 pixels for ldpi