更改Drawable的颜色平衡

耶旺

可以更改Drawable?的颜色平衡。

例如,我想转换
在此处输入图片说明为=>在此处输入图片说明

我尝试了一下,但是它将所有Drawable的颜色更改为一种唯一的颜色:

        Drawable drawable; // my drawable
        float r = Color.red(110) / 255f;
        float g = Color.green(150) / 255f;
        float b = Color.blue(200) / 255f;

        ColorMatrix cm = new ColorMatrix(new float[] {
                // Change red channel
                r, 0, 0, 0, 0,
                // Change green channel
                0, g, 0, 0, 0,
                // Change blue channel
                0, 0, b, 0, 0,
                // Keep alpha channel
                0, 0, 0, 1, 0,
        });
        ColorMatrixColorFilter cf = new ColorMatrixColorFilter(cm);

        drawable.setColorFilter(cf);

我指定我不想将src图像分为两层或更多层并为其中之一着色。

豪尔赫西斯

您可以使用来向图像应用所需颜色的色调mutate().setColorFilter(),然后将具有新颜色的Drawable设置到ImageView中:

   ImageView imgImagen = (ImageView)findViewById(R.id.myImageView);
    Drawable myImage = getResources().getDrawable( R.drawable.boy );
    //Using red color.
    myImage.mutate().setColorFilter(0xffff0000, PorterDuff.Mode.MULTIPLY);
   imgImagen.setImageDrawable(myImage);

例如使用这个ImageView

   <ImageView
        android:id="@+id/myImageView"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:src="@drawable/boy"
        android:contentDescription="" />

您将得到以下图像:

在此处输入图片说明

您也可以使用示例中定义的颜色:

 myImage.mutate().setColorFilter(Color.argb(255, 110, 150, 200), PorterDuff.Mode.MULTIPLY);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章