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

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

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

 @drawable/splashscreenimage true  

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

  [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中有几种types的drawable,包括实际位图,九个补丁和XML文件。 尝试使用XML文件包装图像文件,该文件为其提供属性,然后将XML文件用作可绘制而不是源图像。

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

   

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

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

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

图像放大的原因是因为您使用的图像的像素高于您正在测试应用程序的设备屏幕的分辨率。为了解决这个问题,最好的方法是为不同的设备屏幕创建适当大小(像素)的图像然后相应地将它们放在可绘制文件(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活动的背景 。 图像加载到并使用gravity属性进行 中心对齐。

         

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

  

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

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

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


参考链接:

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

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