如何在每次点击时更改可绘制的颜色?

时间:2017-02-04 05:51:58

标签: android-studio button drawable porter-duff colorfilter

我有一个背景设置为可绘制的按钮,以获得圆角。我试图让按钮在每次点击时改变颜色,而不必画出我想要使用的每种颜色。

目前我正在尝试使用PorterDuff在drawable的白色背景上应用滤镜。

Drawable mDrawable = ResourcesCompat.getDrawable(getResources(),
    R.drawable.rounded_button, null);
mDrawable.setColorFilter(new PorterDuffColorFilter(0x800000ff,
    PorterDuff.Mode.MULTIPLY));

当我加载应用程序时,按钮保持白色。对于我做错了什么或者更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

试试这个

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);

或者

ImageView imageView = (ImageView) findViewById(R.id.imageview);
imageView.setColorFilter(getString(R.color.your_color));

或者

int iColor = Color.parseColor(color);

int red   = (iColor & 0xFF0000) / 0xFFFF;
int green = (iColor & 0xFF00) / 0xFF;
int blue  = iColor & 0xFF;

float[] matrix = { 0, 0, 0, 0, red,
                   0, 0, 0, 0, green,
                   0, 0, 0, 0, blue,
                   0, 0, 0, 1, 0 };

ColorFilter colorFilter = new ColorMatrixColorFilter(matrix);
drawable.setColorFilter(colorFilter);

或者

ImageView lineColorCode = (ImageView)convertView.findViewById(R.id.line_color_code);
int color = Color.parseColor("#AE6118"); //The color u want             
lineColorCode.setColorFilter(color);

或使用此库 https://github.com/TakeoffAndroid/IconColorChanger/blob/master/app/src/main/java/com/takeoffandroid/iconcolorchanger/IconChangerActivity.java

答案 1 :(得分:0)

请参阅此链接。您可以获得一些想法。How to Change color of Button in Android when Clicked?