我有一个简单的启动屏幕,带有白色背景,屏幕中央有徽标。在现代版本的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>
答案 0 :(得分:3)
使用<item/>
内的<bitmap/>
标签代替使用简单的<item>
标签。
来自the Layer List drawable documentation:
默认情况下,所有可绘制项目的大小都会缩放到适合包含View的大小。 [...]为避免缩放列表中的项目,请在
<bitmap>
元素内使用<item>
元素来指定可绘制对象,并将重力定义为不缩放的对象,例如{{1} }。
"center"
答案 1 :(得分:1)
这是因为属性android:width
和android: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”