내 사용자 정의 모양의 Button에 ColorStateList
을 구현했습니다. 물론 단추를 누르고 누를 때 단색을 변경합니다.API 21 아래에서 GradiantDrawable.setdColor()를 설정하는 방법은 무엇입니까?
GradiantDrawable의 색상을 API 21 이상으로 설정했기 때문에 API 21 이상에서는 제대로 작동하지만 API 21 이하에서는 제대로 작동하지 않습니다.
그래서 어떻게 21 미만의 API에 대해 동일한 효과를 보관할 수 있습니까?
이 내 방법은 현재의 모습입니다 : API 21 이하 전화기를 들어 ColorFilter
및 onTouchListener
를 사용하여 해결
public void SelectorEffect(View v) {
ColorStateList colorStateList = null;
GradientDrawable gd = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (v.getId() == R.id.login_btn) {
colorStateList = getPressedColorSelector(ContextCompat.getColor(this, R.color.arion_light), ContextCompat.getColor(this, R.color.arion_light2));
gd = (GradientDrawable) getApplicationContext().getResources().getDrawable(R.drawable.arion_buttonshape_login);
} else if (v.getId() == R.id.createAccount_btn) {
colorStateList = getPressedColorSelector(ContextCompat.getColor(this, R.color.arion_blue), ContextCompat.getColor(this, R.color.arion_light2));
gd = (GradientDrawable) getApplicationContext().getResources().getDrawable(R.drawable.arion_buttonshape_create);
}
gd.setColor(colorStateList);
} else {
//Code for phones below API 21:
}
}