1

現在、画像の zip ファイルをダウンロードして抽出し、ユーザーの SystemUI にインストールするカラー ピッカーをアプリケーションに追加しようとしています。

これらのアイコン内の色を変更する方法を見つけるためにかなり長い間探しましたが、これまでのところ、実装できるものを見つけることができませんでした.

基本的に別の色の上に色を置く (ただし、透明な領域ではない) カラー マスクのようなものを使用できるようにしたいと考えています。非アクティブな部分ではなく、画像の一部です。

まだ画像を投稿することは許可されていないので、ここに私が達成しようとしていることを視覚化するのに役立つ直接リンクがあります.

http://i1135.photobucket.com/albums/m636/Mastur_Mynd/stack_img.png

更新- 少しいじって、もう少し見回した後、私が信じているのを助けるために少し見つけました...

package com.masturmods.settings.util;

import net.margaritov.preference.colorpicker.ColorPickerPreference;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;

public class Colorizer extends ColorPickerPreference {

    public Colorizer(Context context) {
        super(context);
    }

    public static void colorize(String pathName, int color) {
        Bitmap dec = BitmapFactory.decodeFile(pathName);
        Bitmap mIcon = dec.copy(Bitmap.Config.ARGB_8888, true);
        Canvas c = new Canvas(mIcon);
        Paint paint = new Paint(color);
        ColorMatrix cm = new ColorMatrix();
        cm.setSaturation(0);
        ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
        paint.setColorFilter(f);
        c.drawBitmap(mIcon, 0, 0, paint);
        mIcon.recycle();
    }
}

Herry のおかげで、イメージはキャンバスに渡されるようになりましたが、まったく変化していません。これまですべてを追跡しましたが、色は設定によって保存されており、このコードによってアクセスされています。

4

1 に答える 1

0

colorize メソッドでこのコードを使用する必要があります

    Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

またはこれを試してください

    Bitmap mIcon = dec.copy(Bitmap.Config.ARGB_8888, true);

他のメソッドが Immutable Bitmap を返すため、メモリに十分注意してください。発生した場合に処理することを意味します。Immutable to mutable image の詳細については、この SO リンクを参照してください。ここをクリック

于 2012-04-20T10:05:44.477 に答える