2017-01-09 11 views
0

PNGアイコンに色を塗りたい。ここでAndroidでB&W PNGアイコンを色で塗りつぶすにはどうすればいいですか?

は私の現在のコードです:

  ingredientImageView.setImageResource(context.getResources().getIdentifier("ico_" + ingredient.replace("-", "_"), "drawable", context.getPackageName())); 
      ingredientImageView.setColorFilter(iconTextColor,PorterDuff.Mode.SRC_IN); 

このコードは次のように私のアイコンを作る:ここ

enter image description here

iconTextColorは黒です。しかし、カラーフィルターはアイコンの白い部分を塗りつぶします。あなたは下のアイコンを見つけることができます。

enter image description here

黒の線は、私が欲しい色になるはずです。しかし、そのアイコンの中の葉の中は白いままでなければなりません。

ので、透明 - >透明、白 - >白、黒色> dynamicColorに

どのように私はそれを行うことができますか?

+0

を見ることができますか?アイコンの特定の部分に色を塗りたいのですか? –

+0

'ImageView.setColorFilter(ContextCompat.getColor(context、R.color.COLOR_YOUR_COLOR));'あなたに適したモードを使用してみてください。 –

+0

あなたは実際に何をしたいですか? – pskink

答えて

0

あなたはランダムなRGB値を持つカスタムColorMatrixを定義しようとすることができます:

Random rand = new Random(); 
    int r = rand.nextInt(256); 
    int g = rand.nextInt(256); 
    int b = rand.nextInt(256); 

    ColorMatrix cm = new ColorMatrix(); 
    cm.set(new float[] { 
         1, 0, 0, 0, r, 
         0, 1, 0, 0, g, 
         0, 0, 1, 0, b, 
         0, 0, 0, 1, 0 }); // last line is antialias 
    paint.setColorFilter(new ColorMatrixColorFilter(cm)); 
    canvas.drawBitmap(myBitmap, toX, toY, paint); 
+0

これで私の問題は解決しました。自分の色のRGB値を設定し、フィルターを設定するだけです。私はあなたがSDK 17の下に次のコード ImageViewのImageViewの=(ImageViewの)findViewById(R.id.my_appcompat_imageview)を使用することができます17 – Burak

0

.pngアイコンの色を変更することはできませんが、xml形式のベクターアイコンの色を変更することはできます。 アイコンの色を変更するには、アイコンを別の色でインポートします。

+1

私はあなたに同意しない。フィルタを使用すると、色を変更することができます。 – Burak

+0

以下のように、ランダムなRGB値を持つカスタムColorMatrixを定義しようとすると、これを試してみる –

0

私はあなたの問題についてはあまりわからないが、私は.pngの画像の色を変更する必要がある時はいつでも私はちょうどを使用することティントメソッド。あなたは助け

XMLコードの次のコード

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/ss" 
     android:tint="@color/colorPrimary" 
     /> 

フルアイコンの色を変更したいJavaコード

getBackground().setTint(tintColor); 
+0

ありがとうございました。 最終描画領域originalDrawable = imageView.getBackground()。 最終描画可能wrappedDrawable = DrawableCompat.wrap(originalDrawable); DrawableCompat.setTintList(wrappedDrawable、ColorStateList.valueOf(Color.GREEN))。 imageView.setBackgroundDrawable(wrappedDrawable); – Burak

+0

として分SDKを使用する必要がありますあなたの –

関連する問題