通过setBackgroundResource设置后台后,setColorFilter不起作用

时间:2014-12-09 12:49:42

标签: android imageview tint

我创建了一个小应用程序,它会在点击时循环显示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);
            }
        });
    }
}

1 个答案:

答案 0 :(得分:4)

滤镜适用于ImageView 内容,而不是背景。使用ImageView#setImageResource(int resId)设置内容并应用彩色滤镜。

如果您需要将ColoFilter添加到ImageView的背景,可以尝试mPic.getBackground().setColorFilter()之类的内容(假设getBackground()返回非空值)。< / p>