在 Android 中,StateListDrawable 是一種用于表示不同狀態下的 Drawable 資源。為了在不同分辨率下適配 StateListDrawable,你需要根據屏幕密度創建相應的資源文件夾,并在每個文件夾中放置適當大小的圖片資源。
首先,你需要了解 Android 支持的屏幕密度:
接下來,為每個屏幕密度創建相應的資源文件夾。在 res
目錄下創建以下文件夾:
將適當大小的圖片資源放入每個文件夾中。例如,如果你有一個名為 button_background.xml
的 StateListDrawable,你需要在每個文件夾中創建一個具有相同名稱的 XML 文件,但使用不同大小的圖片資源。
例如,button_background.xml
可能如下所示:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_default" />
</selector>
在這個例子中,你需要為每個屏幕密度提供 button_pressed
、button_focused
和 button_default
圖片資源。將這些資源放入相應的 drawable 文件夾中,并確保它們具有相同的名稱。
最后,在布局文件或代碼中引用 StateListDrawable:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_background" />
這樣,Android 系統會根據設備的屏幕密度自動選擇合適的圖片資源。這樣可以確保在不同分辨率的設備上,StateListDrawable 能夠正確地適配和顯示。