android,background,layer-list和可伸缩位图项

Luk*_*ela 15 android background bitmap layer-list

我有以下drawable set作为背景:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">

<item>
  <bitmap android:src="@drawable/base_bg"
    android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp">
  <bitmap android:src="@drawable/decoration1"
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp"  />
</item>
<item android:top="10dp" android:left="10dp">
  <bitmap android:src="@drawable/decoration2"
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" 
    />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

它显示所有位图(base_bg,decoration1decoration2),但我找不到修改它们大小的方法.我想拥有主要背景,并在其上面根据dpi具有不同尺寸的装饰.有没有一种简单的方法可以做到这一点,或者我真的必须为不同的dpi有一堆"装饰"?这不好,我想改为scale/resize选项!

android:widthandroid:height属性的东西,我想了解,但我知道,这是行不通的.目前我正在为不同的DPI使用不同的版本,但希望它可以更加用户友好.

Dav*_*sse 11

我不知道这些图像是怎么样的,但是,例如,你可以制作一个大图像并在项目android:drawable字段中使用它,这样图像就可以获得项目的大小.

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">

<item>
  <bitmap android:src="@drawable/base_bg"
    android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration1">
</item>
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration2">
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)

其他解决方案可能是使用LayerDrawable(此处)和Drawable(此处)类以编程方式执行此操作.您可以使用3个可绘制对象构造图层对象,然后使用方法setBounds(Rect)在每个Drawable对象上选择正确的大小.

我希望它对你有所帮助.