4

クリックすると ImageView の着色された画像を循環する小さなアプリを作成しました。

レイアウトファイルに設定した画像ではうまくいきますが、以下のようなコードから画像を設定するとうまくいきません。

どんな助けでも感謝します。

public class MainActivity extends Activity {

    private ImageView mPic;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mPic = (ImageView) findViewById(R.id.pic);
        mPic.setBackgroundResource(R.drawable.msh);

        mPic.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random random=new Random();
                ColorFilter cf = new PorterDuffColorFilter(Color.argb(192, random.nextInt(255), random.nextInt(255), random.nextInt(255)),Mode.SRC_ATOP);
                mPic.setColorFilter(cf);
            }
        });
    }
}
4

1 に答える 1

5

カラー フィルタは、背景ではなくImageView コンテンツに適用されます。ImageView#setImageResource(int resId)を使用してコンテンツを設定すると、カラー フィルターが適用されます。

ColoFiltertoImageViewの背景を追加する必要がある場合は、次のようなことを試すことができます ( null 以外の値mPic.getBackground().setColorFilter()を返すと仮定します)。getBackground()

于 2014-12-09T12:52:11.090 に答える