如何在android:windowBackground中处理位图的缩放和透明度
我正在尝试为我的android应用程序设置一个全局背景图像。该图像是一个具有透明度的PNG文件。我按以下方式设置:如何在android:windowBackground中处理位图的缩放和透明度,android,background,bitmap,Android,Background,Bitmap,我正在尝试为我的android应用程序设置一个全局背景图像。该图像是一个具有透明度的PNG文件。我按以下方式设置: <style name="MyAppTheme" parent="@style/Theme.AppCompat"> <item name="android:windowBackground">@drawable/background_main</item> </style> 我的PNG文件应始终位于屏幕底部,并始终缩放以匹配
<style name="MyAppTheme" parent="@style/Theme.AppCompat">
<item name="android:windowBackground">@drawable/background_main</item>
</style>
我的PNG文件应始终位于屏幕底部,并始终缩放以匹配屏幕大小。然而,使用上述代码,我面临两个问题
drawable/background_main.xml中的层列表解决:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background_main_bitmap"
android:gravity="bottom|center_horizontal" />
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
</shape>
</item>
<item>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background_main_bitmap"
android:gravity="bottom|center_horizontal|fill_horizontal" />
</item>
</layer-list>
问题#2仍然存在…实际上,使用图层列表
可能会给您带来预期的:
默认情况下,所有可绘制项目都会缩放以适合包含视图的大小。因此,将图像放置在不同位置的图层列表中可能会增加视图的大小,并且某些图像会根据需要进行缩放。为避免缩放列表中的项目,请使用
元素中的
元素指定可绘制的对象,并将重力定义为不缩放的对象,例如“中心”
因此,以下可抽出式将适合您的要求:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item android:drawable="@drawable/background_main_bitmap" />
</layer-list>
只需更改android:gravity的属性,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/flush"
android:gravity="fill_horizontal|fill_vertical"/>
我没有对#2的答案,但分层可绘制文件的编写可能要简单得多:
这不起作用,因为窗口背景不是视图。只是一个可以拉的。