【问题标题】:How to change the color of a drawable on every click?如何在每次点击时更改可绘制对象的颜色?
【发布时间】:2017-02-04 05:51:57
【问题描述】:

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

目前我正在尝试使用 PorterDuff 在可绘制对象的白色背景上应用颜色过滤器。

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

当我加载应用程序时,按钮保持白色。关于我做错了什么或解决此问题的更好方法的任何想法?

【问题讨论】:

  • 使用Random方法生成RGB
  • @RajeshKushvaha 问题不在于我如何选择颜色,而在于如何让它们出现在按钮上。目前我只能通过直接编辑可绘制的 xml 文件来让它们改变颜色。我正在寻找的解决方案是如何以编程方式更改可绘制对象的颜色。

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


【解决方案1】:

请参考这个链接。你可以得到一些想法。How to Change color of Button in Android when Clicked?

【讨论】:

    【解决方案2】:

    试试这个

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2015-03-14
      • 2020-01-27
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      相关资源
      最近更新 更多