Android启动页layer-list中Bitmap如何缩小并保持高清居中?
解决Android启动页Bitmap过大,实现居中高清小型Logo的问题
我来帮你搞定这个启动页Logo太大的问题!你当前的layer-list代码已经实现了居中,但直接用<bitmap>标签会让图片按原始尺寸显示,所以才会出现过大的情况。这里有两种靠谱的方法,既能缩小Logo,又能保持高清:
方法一:用<inset>限制显示区域(推荐,无缩放损耗)
这个方法相当于给Logo加上了“外边距”,只显示原图中间的一部分,完全不会损失清晰度——前提是你的icon_okay本身是高清图,并且已经放到对应dpi的drawable目录(比如xhdpi、xxhdpi)里。
修改后的代码如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <!-- 背景色层 --> <item android:drawable="@drawable/background_colour" /> <!-- 用inset控制Logo的显示大小,值越大,Logo显示越小 --> <item> <inset android:insetLeft="64dp" android:insetTop="64dp" android:insetRight="64dp" android:insetBottom="64dp"> <bitmap android:src="@drawable/icon_okay" android:gravity="center" /> </inset> </item> </layer-list>
你可以根据需求调整insetLeft/Top/Right/Bottom的dp值,直到得到你想要的小型Logo大小。
方法二:用<scale>按比例缩放
如果需要更精确的缩放比例(比如缩放到原图的50%),可以用<scale>标签包裹<bitmap>:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <item android:drawable="@drawable/background_colour" /> <item> <scale android:scaleWidth="0.5" android:scaleHeight="0.5" android:gravity="center"> <bitmap android:src="@drawable/icon_okay" /> </scale> </item> </layer-list>
这里的scaleWidth和scaleHeight取值范围是0到1,0.5就是缩放到原图的50%。同样要确保你的Logo原图是高清的,否则缩放后可能会模糊。
额外建议:换成矢量图(Vector Drawable)
如果可以的话,把你的Bitmap格式Logo转换成Vector Drawable(Android Studio里的Vector Asset工具就能搞定)。矢量图不管怎么缩放都不会模糊,而且文件体积更小,适配所有分辨率设备更省心,是Android启动页Logo的最佳选择。
内容的提问来源于stack exchange,提问作者Nella
相关产品推荐
相关产品推荐

