Я хочу добавить цветной фильтр в изображение

Я хотел бы добавить ColorFilter в ImageView .

В настоящее время я использую:

 ImageView iv = (ImageView)findViewById(resIdOfImageToFilter); iv.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP); 

Я проверил несколько режимов в PotterDuff таких как SRC_IN , SRC и т. Д., Но я не получаю никакой разницы ни в одном из режимов … Весь режим превращает весь ImageView в идеальный красный цвет.

Мне нужно смешать RED-цвет в существующем изображении, чтобы изображение выглядело с оттенком REDDISH ….

Правильный способ сделать это – использовать PorterDuff.Mode.LIGHTEN .

Таким образом, обновленный код будет выглядеть так:

 ImageView iv = (ImageView)findViewById(resIdOfImageToFilter); iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN); 

Это сработало для меня:

В res / colors.xml:

 <color name="highlight_color_filter">#A5FF0000</color> 

В своей деятельности инициализируйте фильтр и выделите краску:

 int highlightColor = context.getResources().getColor(R.color.highlight_color_filter); PorterDuffColorFilter colorFilter = new PorterDuffColorFilter(highlightColor, PorterDuff.Mode.SRC_ATOP); Paint redHighLight = new Paint(); redHighLight.setColorFilter(targetHitFilter); redHighLight.setAlpha(190); 

Затем примените фильтр к ImageView:

 ImageView iv=(ImageView)findViewById(ResIdOfImageToFilter); iv.setColorFilter(redHighLight); 

Если это не работает, попробуйте применить к ImageView drawable:

 iv.getDrawable().setColorFilter(redHighLight); 

надеюсь, это поможет.

Вы можете использовать android: tint ( link ) в вашем xml-файле. Пример:

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

Другое решение, вы могли бы сохранить режим PorterDuff.Mode.SRC_ATOP и использовать другую альфу, чтобы иметь прозрачный цвет.

Я использую 155 как значение Alpha.

В вашем XML-файле вы можете указать оттенок пользователя Например

  <ImageView android:id="@+id/scrachImage_1" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:tint="@color/colorAccent" android:src="@drawable/eagle" /> 

Если вы хотите программно добавить цветной фильтр, используйте

 scratchImage_2.setColorFilter(Color.BLACK); 

Вы также можете удалить этот цветной фильтр, используя этот код:

scratchImage_2.setColorFilter(null);