Android初始屏幕在全屏上拉伸徽标

时间:2018-09-12 13:59:38

标签: android android-layout react-native

我有一个简单的启动屏幕,带有白色背景,屏幕中央有徽标。在现代版本的Android中,它可以正常工作,但是在“旧”版本的Android(例如API 22)中,徽标会在全屏上显示。如何使徽标启动屏幕在所有版本的Android(API 19之前)上看起来正常? ps。我不是Android开发人员。

drawable / 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/white" />

  <item
    android:width="150dp"
    android:height="50dp"
    android:drawable="@mipmap/my_logo"
    android:gravity="center" />

</layer-list>

values / styles.xml

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:statusBarColor">@color/white</item>
    </style>

    <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:windowBackground">@drawable/background_splash</item>
        <item name="android:statusBarColor">@color/white</item>
    </style>

</resources>

5 个答案:

答案 0 :(得分:3)

使用<item/>内的<bitmap/>标签代替使用简单的<item>标签。

来自the Layer List drawable documentation

  

默认情况下,所有可绘制项目的大小都会缩放到适合包含View的大小。 [...]为避免缩放列表中的项目,请在<bitmap>元素内使用<item>元素来指定可绘制对象,并将重力定义为不缩放的对象,例如{{1} }。

"center"

答案 1 :(得分:1)

这是因为属性android:widthandroid:height是在API级别23中引入的。如果您想根据屏幕尺寸显示具有相对尺寸的相同图像,我可以想到的唯一解决方案是提供替代位图资源。

这里是link to the Android Developer Guide,它对此作了进一步解释。

答案 2 :(得分:0)

该问题与Android版本无关。它应该与设备的屏幕尺寸有关。

要声明要在不同屏幕上使用的不同布局和位图,必须将这些替代资源放置在单独的目录/文件夹中。

这意味着,如果为xhdpi设备生成200x200的图像,则应以150x150的hdpi,100x100的mdpi和75x75的ldpi设备生成相同的资源。

总之,Android应用程序应提供6种图像尺寸:ldpi(0.75x),mdpi(1.0x),hdpi(1.5x),xhdpi(2.0x),xxhdpi(3.0x)和xxxhdpi(4.0x) )。

答案 3 :(得分:0)

我通常要做的是确保布局的根节点为RelativeLayout,第一个子节点为ImageView,且 centerCrop 为scaleType。

这是一个例子:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:scaleType="centerCrop"
        android:background="@drawable/img_background"/>

    ...

答案 4 :(得分:0)

第一件事不使用png使用可绘制的矢量。这样,您无需为不同的屏幕尺寸设置单独的图像。使用它来转换图像http://a-student.github.io/SvgToVectorDrawableConverter.Web/

,现在在XML文件的图像视图中,将比例类型设置为“中心裁剪”或“适合XY”  android:scaleType =“ centerCrop”或使用android:scaleType =“ fitxy”