0

私のアプリでは、マーカー画像の色を変更しようとしています。しかし、それは私が望むように正確に機能しません。

Drawable drawable = getDrawable(R.drawable.ic_marker);
drawable.setColorFilter(item.getColor()), PorterDuff.Mode.ADD);

ドローアブルは次のようになります (下)。ColorFilter を追加すると、マーカーは正しい色になり、白は白のままですが、画像の透明な部分も色になります。黒だけを変えて、白と透明の部分はそのままにしておきたいです。

ドローアブル

4

1 に答える 1

0

これは、setColorFilterColorMatrix 、およびColorMatrixColorFilterの実験に使用するものです。

drawable.setColorFilter(item.getColorMatrix());

または:

drawable.setColorFilter(new ColorMatrixColorFilter(getColorMatrix5()));//custom 5

//custom 5
private ColorMatrix getColorMatrix5() 
{
    ColorMatrix colorMatrix = new ColorMatrix();
    colorMatrix.setSaturation(0);//make it greyscale
    ColorMatrix blueMatrix = new ColorMatrix(new float[] {
        0, 0, 0, 0, 0, // red
        0, 0, 0, 0, 0, // green
        1, 1, 1, 1, 1, // blue
        1, 1, 1, 1, 1  // alpha
    });
    // Convert, then scale and clamp
    colorMatrix.postConcat(blueMatrix);
    return colorMatrix;
}//getColorMatrix5

PorterDuffPorterDuff.ModePorterDuffXfermodeColorMatrixColorMatrixColorFilterPorterDuffColorFilterColorFilter、を参照してください。CanvasColor

于 2018-06-01T10:20:07.070 に答える