2014-12-09 3 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) для установки содержимого и цветового фильтра.

Если вам нужно добавить ColoFilter к ImageView «s фона, вы можете попробовать что-то вроде mPic.getBackground().setColorFilter() (при условии, что getBackground() возвращает непустое значение).

+0

Ах, справа. Любая возможность установить цветной фильтр на фоне? –

+0

@MichaelSchmidt см. Обновленный ответ. – aga

+0

Да, работает. Благодарю. –

 Смежные вопросы

  • Нет связанных вопросов^_^