Имеем
У меня в приложении должно быть много картинок(порядка 50-60), они размещаться по 10-15 штук в HorizontalScrollView->LinearLayout
Туда их можно добавлять динамически(как сейчас я делаю):
LinearLayout layout = (LinearLayout) findViewById(R.id.ll);
for (int i = 0; i < 50; i++) {
ImageView imageView = new ImageView(this);
imageView.setId(i);
imageView.setImageBitmap(BitmapFactory.decodeResource(
getResources(), R.drawable.pic1));
layout.addView(imageView);
}
Либо же картинки можно прописывать в разметке(не рациональный вариант)
Что нужно:
Сделать так, чтобы при нажатию на какую-либо картинку, поверх нее появился прозрачный градиент из drawable:
Когда пользователь нажмет на другую картинку - градиент с первой уберется и появится на другой картинке.
Проблема:
Не понимаю как обработать это все в OnClick. Как получить ImageView, чтобы задать ей градиент? Как потом отменить его для ImageView?
Прошу помочь в решение данной задачи. Заранее спасибо!
Ответ
Таки @pavlofff прав, это можно через selector сделать.
Создаём selector - файл my_selector.xml в res/drawable
ImageView imageView = new ImageView(this);
imageView.setId(i);
imageView.setImageResource( R.drawable.my_selector );
layout.addView(imageView);
Не забываем сделать родительский элемент кликабельным:
Ещё можно добавлять в разметку на ImageView, a FrameLayout c двумя ImageView внутри, один поверх другого. И им назначать разные картинки.
LinearLayout layout = (LinearLayout) findViewById(R.id.ll);
for (int i = 0; i < 50; i++) {
FrameLayout fr = new FrameLayout(this);
fr.setClickable(true);
layout.addView(fr);
ImageView imageView = new ImageView(this);
imageView.setId(i);
imageView.setImage(R.drawable.pic1);
fr.addView(imageView);
ImageView imageView = new ImageView(this);
imageView.setId(i+1000);
//устанавливаем по умолчанию пустую картинку
imageView.setImageResource(null);
fr.addView(imageView);
}
Далее по нажатию на картинку ставим ей градиент
imageView.setImageResource(R.drawable.ГРАДИЕНТ);
И когда надо всё убрать - пробегаемся циклом по всем картинкам и ставим им пустые изображения
imageView.setImageResource(null);
Комментариев нет:
Отправить комментарий