在Android中,StateListDrawable
是一個用于根據狀態(如按下、選中等)動態改變圖像的 Drawable。要在代碼中動態設置 StateListDrawable
,請遵循以下步驟:
StateListDrawable
對象。以下是一個簡單的示例,展示了如何在代碼中動態設置 StateListDrawable
:
import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button = findViewById(R.id.button);
// 創建一個 StateListDrawable 對象
StateListDrawable stateListDrawable = new StateListDrawable();
// 創建一個 Drawable 對象,表示按下狀態的背景
GradientDrawable pressedDrawable = new GradientDrawable();
pressedDrawable.setColor(ContextCompat.getColor(this, R.color.pressed_color));
// 創建一個 Drawable 對象,表示默認狀態的背景
GradientDrawable defaultDrawable = new GradientDrawable();
defaultDrawable.setColor(ContextCompat.getColor(this, R.color.default_color));
// 為不同的狀態添加相應的 Drawable
int[] pressedState = {android.R.attr.state_pressed};
stateListDrawable.addState(pressedState, pressedDrawable);
stateListDrawable.addState(new int[]{}, defaultDrawable);
// 將 StateListDrawable 設置為按鈕的背景
button.setBackground(stateListDrawable);
}
}
在這個示例中,我們首先創建了一個 StateListDrawable
對象。然后,我們創建了兩個 GradientDrawable
對象,分別表示按下狀態和默認狀態的背景。接下來,我們使用 addState()
方法為不同的狀態添加相應的 Drawable。最后,我們將 StateListDrawable
設置為按鈕的背景。
注意:在實際項目中,你可能需要根據需求調整示例代碼。