我有很多不同背景颜色的按钮。我想知道是否有办法在点击时应用一些颜色过滤器。例如,我希望我的所有按钮在点击时变暗。它们保持原来的颜色,但颜色更深。
有没有一种简单的方法可以做到这一点,或者我必须为每个按钮定义较深的颜色?
谢谢。
我有很多不同背景颜色的按钮。我想知道是否有办法在点击时应用一些颜色过滤器。例如,我希望我的所有按钮在点击时变暗。它们保持原来的颜色,但颜色更深。
有没有一种简单的方法可以做到这一点,或者我必须为每个按钮定义较深的颜色?
谢谢。
我假设您希望按钮在触摸时变暗,并在用户释放按钮时恢复正常。
我建议创建一个为您工作的自定义按钮:
import android.content.Context;
import android.graphics.LightingColorFilter;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.Button;
public class DarkenButton extends Button {
public DarkenButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public DarkenButton(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// darken background
getBackground().setColorFilter(
new LightingColorFilter(0xff888888, 0x000000));
break;
case MotionEvent.ACTION_UP:
// clear color filter
getBackground().setColorFilter(null);
break;
}
return super.onTouchEvent(event);
}
}
然后在您通常使用按钮的任何地方使用 DarkenButton。
尝试这个-
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));
}
}
对于清除过滤器,请执行此操作
button.getBackground().clearColorFilter();
是的,您必须定义每个按钮的较暗颜色,然后单击这些按钮分配新的较暗颜色