5

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

有没有一种简单的方法可以做到这一点,或者我必须为每个按钮定义较深的颜色?

谢谢。

4

3 回答 3

7

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

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

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。

于 2014-02-24T18:48:32.640 回答
5

尝试这个-

 button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

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

            }


        }

对于清除过滤器,请执行此操作

button.getBackground().clearColorFilter();
于 2013-07-30T13:05:49.263 回答
0

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

于 2013-07-30T13:01:00.307 回答