2014-12-09 25 views
1

我創建了一個小應用程序,它可以在點擊時循環顯示ImageView的有色圖像。setColorFilter在通過setBackgroundResource設置背景後無法工作

它與佈局文件中設置的圖像效果很好,但從下面的代碼設置圖像時不起作用。

任何幫助表示讚賞。

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

回答

3

濾色器被施加到ImageView內容,而不是它背景。使用ImageView#setImageResource(int resId)來設置內容並且將應用顏色過濾器。

如果您需要添加ColoFilterImageView的背景,你可以嘗試像mPic.getBackground().setColorFilter()(假設getBackground()返回非空值)。

+0

啊,對。任何可能性在背景上設置濾色器? – 2014-12-09 13:11:01

+0

@MichaelSchmidt查看更新後的答案。 – aga 2014-12-09 13:35:31

+0

是的,作品。謝謝。 – 2014-12-09 14:59:53