2016-05-11 5 views
0

У меня есть значок в png в drawable. Он черный с прозрачным фоном. Как я могу изменить цвет значка, не добавляя еще один чертеж?Изменить цвет значка png из доступных ресурсов

+0

Перейти краски и инвертировать его – Haroon

+0

без краски))))) Только в андроида – Igor

+0

См http://stackoverflow.com/a/5837189/6097062 –

ответ

1

Вы можете использовать ColorFilter изменить цвет иконки во время выполнения.

Попробуйте что-то вроде этого:

Drawable mIcon= ContextCompat.getDrawable(getActivity(), R.drawable.your_icon); 
    mIcon.setColorFilter(ContextCompat.getColor(getActivity(), R.color.new_color), PorterDuff.Mode.MULTIPLY); 
    mImageView.setImageDrawable(mIcon); 
2

вы можете попробовать это

Drawable mDrawable = context.getResources().getDrawable(R.drawable.yourdrawable); 
mDrawable.setColorFilter(new 
PorterDuffColorFilter(0xffff00,PorterDuff.Mode.MULTIPLY)); 
0
Drawable mDrawable = context.getResources().getDrawable(R.drawable.balloons); 
mDrawable.setColorFilter(new 
PorterDuffColorFilter(0xffff00,PorterDuff.Mode.LIGHTEN)); 

Try выше вы можете играть с PorterDuffColorFilter (0xFFFF00, PorterDuff.Mode.LIGHTEN) Вы можете использовать черный и т.д.

0

Попробуйте использовать этот статический метод:

public static Drawable changeDrawableColor(Drawable drawable, int color) { 
    drawable = DrawableCompat.wrap(drawable); 
    DrawableCompat.setTint(drawable, color); 
    return drawable; 
} 

Параметр цвета может быть colo r из ваших ресурсов.

0

PorterDuff.Mode.SRC_IN

Используя это свойство изменить цвет значка с точным цветом выбранного.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { 
     Drawable mIcon= ContextCompat.getDrawable(this, R.drawable.icon_send); 
     mIcon.setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.SRC_IN); 
     ibSendMessage.setBackground(mIcon); 
} 

В новых версиях Android вы можете сделать это в XML

android:backgroundTint="@color/colorAccent" 
Смежные вопросы