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的背景,您可以尝试类似mPic.getBackground().setColorFilter()(假设getBackground()返回非空值)。

于 2014-12-09T12:52:11.090 回答