PNG 徽标在 Android 5 (api v22) 的启动画面中显示两次并变形
PNG logo shown twice and disorted in splashscreen on Android 5 (api v22)
我正在为 android 使用 React Native 构建的应用程序制作闪屏。启动画面由纯色背景和 PNG 格式的徽标组成。 Splashscreen 在新 android 版本上运行良好,但在 android 5(api 版本 22)上徽标显示两次,一次正确,一次扭曲(在整个屏幕上拉伸)。截图见文末。
Splashscreen 是使用 npm 包 react-native-splash-screen
设置的,它的源代码如下所示:
res/layout/launch_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splashscreen"
android:orientation="vertical">
</LinearLayout>
和 drawable/splashscreen 看起来像这样:
res/drawable/splashscreen.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/purple"/>
<item
android:width="257dp"
android:height="33dp"
android:drawable="@mipmap/logo"
android:gravity="center" />
</layer-list>
我尝试了几乎所有不同的 android:gravity
、android:scaleType
和 android:tileMode
组合,但都没有成功。即使我将徽标移动到项目中的 <bitmap>
标签,它仍然是一样的。我确实发现,当我将重力道具更改为某个不同的值时,扭曲的徽标会相应地移动。但我无法摆脱它。我也不明白,如果只定义一次,为什么标志会出现两次。
感谢任何帮助。谢谢。
您可以在 LinearLayout
中放置一个 ImageView
,然后将 LinearLayout
背景设置为 @color/purple
,将 ImageView
背景设置为 @mipmap/logo
,如下图:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@mipmap/logo"
/>
</LinearLayout>
我正在为 android 使用 React Native 构建的应用程序制作闪屏。启动画面由纯色背景和 PNG 格式的徽标组成。 Splashscreen 在新 android 版本上运行良好,但在 android 5(api 版本 22)上徽标显示两次,一次正确,一次扭曲(在整个屏幕上拉伸)。截图见文末。
Splashscreen 是使用 npm 包 react-native-splash-screen
设置的,它的源代码如下所示:
res/layout/launch_screen.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/splashscreen"
android:orientation="vertical">
</LinearLayout>
和 drawable/splashscreen 看起来像这样:
res/drawable/splashscreen.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@color/purple"/>
<item
android:width="257dp"
android:height="33dp"
android:drawable="@mipmap/logo"
android:gravity="center" />
</layer-list>
我尝试了几乎所有不同的 android:gravity
、android:scaleType
和 android:tileMode
组合,但都没有成功。即使我将徽标移动到项目中的 <bitmap>
标签,它仍然是一样的。我确实发现,当我将重力道具更改为某个不同的值时,扭曲的徽标会相应地移动。但我无法摆脱它。我也不明白,如果只定义一次,为什么标志会出现两次。
感谢任何帮助。谢谢。
您可以在 LinearLayout
中放置一个 ImageView
,然后将 LinearLayout
背景设置为 @color/purple
,将 ImageView
背景设置为 @mipmap/logo
,如下图:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/purple">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@mipmap/logo"
/>
</LinearLayout>