29

にを追加したいのですColorFilterImageView

現在使用しているもの:

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

PotterDuffなどのSRC_IN複数のモードをチェックしましたSRCが、どのモードでも違いはありません...すべてのモードで全体ImageViewが完全な赤色に変わります。

画像がREDDISHの色合いで見えるように、既存の画像にREDカラーをブレンドする必要があります。

4

5 に答える 5

40

それを行う正しい方法は、を使用することでしたPorterDuff.Mode.LIGHTEN

したがって、更新されたコードは次のようになります。

ImageView iv = (ImageView)findViewById(resIdOfImageToFilter);
iv.setColorFilter(Color.RED, PorterDuff.Mode.LIGHTEN);
于 2013-01-25T06:34:57.690 に答える
12

xmlファイルでandroid:tintlink )を使用でき ます。例:

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/your_drawable"
    android:tint="@color/your_color" />
于 2017-01-01T07:56:24.447 に答える
8

これは私のために働いた:

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ドローアブルに適用してみてください。

iv.getDrawable().setColorFilter(redHighLight);

それがお役に立てば幸いです。

于 2011-11-19T14:43:17.083 に答える
8

他の解決策として、モードを維持PorterDuff.Mode.SRC_ATOPし、別のアルファを使用して透明な色にすることもできます。

アルファ値として155を使用します。

  final int semiTransparentGrey = Color.argb(155, 185, 185, 185);
  drawable.setColorFilter(semiTransparentGrey, PorterDuff.Mode.SRC_ATOP);
于 2013-09-05T15:10:28.130 に答える
1

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);

于 2017-07-30T05:22:59.177 に答える