java代碼代替xml實現圖片
1.使用StateListDrawable替換selector
public static StateListDrawable getSelector(Drawable normalDrawable, Drawable pressDrawable) {
StateListDrawable stateListDrawable = new StateListDrawable();
//給當前的顏色選擇器添加選中圖片指向狀態,未選中圖片指向狀態
stateListDrawable.addState(new int[]{android.R.attr.state_enabled, android.R.attr.state_pressed}, pressDrawable);
stateListDrawable.addState(new int[]{android.R.attr.state_enabled}, normalDrawable);
//設置默認狀態
stateListDrawable.addState(new int[]{}, normalDrawable);
return stateListDrawable;
}
默認不好使需要在使用的對象設置為可點擊的;有兩種方法:
方法1
tv.setClickable(true);
方法2:
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
UIUtils.toast(tv.getText().toString(),false);
}
});
2.使用GradientDrawable替換shape
public static Drawable getDrawable(int rgb,float radius){
GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(rgb); //填充顏色
gradientDrawable.setGradientType(GradientDrawable.RECTANGLE); //shape矩形
gradientDrawable.setCornerRadius(radius); //四周圓角半徑
gradientDrawable.setStroke(UIUtils.dp2px(1), rgb); //邊框厚度與顏色
return gradientDrawable;
}
浙公網安備 33010602011771號