web-dev-qa-db-ja.com

Android ImageView /ビットマップの色を変更する

Androidでビットマップの色を変更する方法を見つける必要があります。 intの値に応じて、アプリケーションで楕円形の画像の色をスムーズに置き換える/変更する必要があります。画像の色をREDに変更するよりもmyValue=5の場合、myValue=322の色をBLUEに変更する場合のようなものが必要です。私がこれを行うことができると思う唯一の方法は、次のようなxmlファイルを使用することでした:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="oval" Android:padding="10dp">
<!-- you can use any color you want I used here gray color-->
 <solid Android:color="#cccccc"/> 
    <corners
     Android:bottomRightRadius="10dp"
     Android:bottomLeftRadius="10dp"
     Android:topLeftRadius="10dp"
     Android:topRightRadius="10dp"/>
</shape>

その後、myValueが変更されてImageView画像リソースが設定されます。しかし、この方法で35の異なるxmlファイルを作成する必要があります...これは良い考えではないと思います。

それで、これを行うためのより良い解決策を提案できる人はいますか?

8
Android-Droid

これが私がこの問題を解決した方法です:

  1. ImageViewsrc="@drawable/button"で宣言します
  2. Drawableを作成し、それにColorFilterを設定し、その後、次のように宣言されたImageViewへのsrcとして使用します。

>>

Drawable myIcon = getResources().getDrawable( R.drawable.button );
ColorFilter filter = new LightingColorFilter( Color.BLUE, Color.BLUE );
myIcon.setColorFilter(filter);
color.setImageDrawable(myIcon);
21
Android-Droid

この解決策は私にはあまりうまくいきません。一部の画像では、最終的な色が間違っていました。私は代わりにこのソリューションを使用します:

Drawable myIcon = getResources().getDrawable(R.drawable.your_image); 
myIcon.setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP); 
((ImageView)findViewById(R.id.view_to_change)).setImageDrawable(myIcon);
16
getResources().getDrawable( R.drawable.button );

現在は非推奨です。この方法でも実行できます。

((ImageView) findViewById(R.id.my_icon))
  .setColorFilter(new LightingColorFilter(Color.BLUE, Color.BLUE));
3
Himadri Pant

あなたはこれをする必要があります。

Drawable myIcon = getResources().getDrawable( R.drawable.button ); 
ColorFilter filter = new LightingColorFilter( Color.BLACK, Color.BLACK);
myIcon.setColorFilter(filter);
1
hoangtu23

TransitionDrawableを使用してこれを実現できます--- http://developer.Android.com/reference/Android/graphics/drawable/TransitionDrawable.html

0
asenovm