StateListDrawable 是一種可以根據控件狀態(如按下、獲取焦點等)自動切換不同圖像的 Android Drawable
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<!-- Drawable for pressed state -->
<shape android:shape="rectangle">
<solid android:color="@color/buttonPressedColor"/>
<corners android:radius="4dp"/>
</shape>
</item>
<item>
<!-- Default Drawable -->
<shape android:shape="rectangle">
<solid android:color="@color/buttonDefaultColor"/>
<corners android:radius="4dp"/>
</shape>
</item>
</selector>
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me!"
android:background="@drawable/button_selector"/>
使用已有的 Android 屬性:盡量利用已有的 Android 屬性來表示狀態,而不是自定義屬性。這樣可以保持代碼的簡潔和一致性。例如,使用 android:state_pressed
表示按下狀態,而不是自定義一個屬性。
使用透明度(Alpha):當需要表示控件被禁用或不可用時,可以使用透明度(Alpha)來表示。這樣可以讓用戶清楚地看到控件的狀態,同時保持界面的簡潔。
避免過多的狀態:盡量減少 StateListDrawable 中的狀態數量,以保持代碼的簡潔。如果有太多狀態,可能需要重新考慮設計方案,以便更好地組織代碼。
使用尺寸限制:如果需要為不同尺寸的屏幕提供不同的圖像資源,可以使用尺寸限制(Size Qualifiers)。例如,可以為小屏幕和大屏幕提供不同的圖像資源。
通過遵循上述最佳實踐,可以確保 StateListDrawable 的使用更加高效、簡潔和易于維護。