Вопрос по android – Применение ColorFilter к ImageView с помощью ShapedDrawable

36

у меня естьImageView сandroid:src установить наShapedDrawableа именно белый круг. Я хочу раскрасить этоImageView во время выполнения, отвечая на некоторые события.imgView.setColorFilter кажется решением, но после использования этого (пробовал другие параметры) изображение становится невидимым (я не вижу его на экране).

Как это решить? И есть ли лучшие способы иметь цветные круги?

Вы можете найтиthis related Q&A интересно. MH.
Извините, но я не смог найти там ничего, связанного с этим вопросом. aplavin
Я не уверен, как вы можете найти принятый ответ, связанный ... Во всяком случае, вот еще одна похожая тема:link, Как и предлагалось, попробуйте:imgView.setColorFilter( 0xff00ffff, PorterDuff.Mode.MULTIPLY );, Если это не соответствует вашим потребностям, здесь также предлагается более сложное решение. MH.
Я написал, чтоsetColorFilter не работает так, как я ожидаю: после его применения изображение просто исчезает с экрана (оставляя там пустое место). aplavin

Ваш Ответ

4   ответа
0

https://github.com/jrvansuita/IconHandler

Это будет работать так:

Icon.on(yourImageView).color(R.color.your_color).icon(R.mipmap.your_icon).put();
12

PorterDuff.Mode.SRC_ATOP instead
PorterDuff.Mode.MULTIPLY

в приведенном выше примере.

Error: User Rate Limit Exceeded
99

я быстро поиграл с этим и заметил твою проблему исчезновения кругов. Без тебя описанияwhat точно вы пытались, я полагаю, вы не пытались установить цветной фильтр наDrawable сам по себе еще? (в отличие отImageViewкоторый, кажется, работает только сBitmapDrawableс).

Следующие операторы прекрасно работают для объявленного в xmlShapeDrawable с белым в качестве исходного цвета:

ImageView redCircle = (ImageView) findViewById(R.id.circle_red_imageview);
ImageView greenCircle = (ImageView) findViewById(R.id.circle_green_imageview);
ImageView blueCircle = (ImageView) findViewById(R.id.circle_blue_imageview);

// we can create the color values in different ways:
redCircle.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY );
greenCircle.getDrawable().setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY );
blueCircle.getDrawable().setColorFilter(getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY );

ShapeDrawable для полноты: (я установил размер наImageView, увидеть ниже)

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
    <solid android:color="@android:color/white" />
</shape>

И один изImageViewВ качестве примера:

<ImageView
    android:id="@+id/circle_red_imageview"
    android:layout_width="40dp"
    android:layout_height="40dp"
    android:padding="5dp"
    android:src="@drawable/circle_white" />

Визуальный результат:

Screenshot of colored circles

Error: User Rate Limit ExceededMULITPLYError: User Rate Limit Exceeded[Sa * Da, Sc * Dc]Error: User Rate Limit Exceeded1Error: User Rate Limit Exceeded1 * Dc = DcError: User Rate Limit Exceeded1Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededmutable()Error: User Rate Limit ExceededDrawableError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded[0,1]Error: User Rate Limit ExceededPorterDuff.ModeError: User Rate Limit Exceededread hereError: User Rate Limit Exceeded
Error: User Rate Limit ExceededPorterDuff.Mode.MULTIPLYError: User Rate Limit ExceededPorterDuff.ModeError: User Rate Limit Exceeded
Error: User Rate Limit ExceededDrawableError: User Rate Limit ExceededImageView.
6

android:tint в ImageView в XML.

Пример:

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

Tested on Android 4.1.2 and 6.0.1

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы