在按钮上应用滤色器

时间:2013-07-30 12:41:33

标签: android button colors background

我有很多带有很多不同背景颜色的按钮。我想知道是否有办法在点击时应用一些彩色滤镜。例如,我希望我的所有按钮在点击时变得更暗。它们保持原始颜色,但颜色较深。

有没有简单的方法,或者我必须为每个按钮定义更深的颜色?

感谢。

3 个答案:

答案 0 :(得分:5)

我假设您希望按钮在触摸时变暗,并在用户释放按钮时恢复正常。

我建议您创建一个自定义按钮,为您完成工作:

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);
    }

}

然后在通常使用Button的任何地方使用DarkenButton。

答案 1 :(得分:4)

试试这个 -

 button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            v.getBackground().setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0xFFAA0000));

            }


        }

并且为了清除过滤器,请执行此操作

button.getBackground().clearColorFilter();

答案 2 :(得分:0)

是的,您必须定义每个按钮的较暗颜色,然后单击这些按钮指定新的较暗颜色