Есть задача в которой надо, что бы пользователь мог выбрать картинку и она тут же начала грузиться на сервер, на экране приложения при этом необходимо показать миниатюру картинку с наложенным на неё прогресс баром(именно на неё, а не рядом или на весь экран), что бы пользователь мог заполнять другие поля пока загружаются картинки.
Из пришедших мне в голову идей: поместить прогресс бар ниже картинки и натянуть на неё отрицательным margin top.
И второй вариант - поместить их в один RalativeLayout и привязать их к топу родительского элемента.
Однако такие подходы я отношу к неким извращениям и хотелось бы узнать, есть ли другие более правильные методы поместить один view элемент на другой.
да почему перебор? берёшь relativelayout в него засовываешь imageview, и поверх кидаешь progressbar по центру, и дальше когда пользователь выбирает картинку, подкгружаешь асинхронно bitmap и загружаешь в imageview и кидаешь поверх progressbar, правда сторонними библиотеками не получиться, придётся свой asynctask писать на upload и в методе onupdate обновлять progressbar, как то так
Дмитрий Конуров: потому что RelativeLayout гораздо тяжелее. Двойной проход по детям, вот это всё. Его следует применять с осторожностью. Задачу полностью решает FrameLayout.
Денис Загаевский: вы меня простите за оффтоп, и я не спорю в вашей компитенции, просто вопрос возникает в голове у молодого Android разработчика, если картинка не фиксированных размеров(именно высоты к примеру) как тогда progressbar отпозиционировать по середине картинки? динамически выставлять отступы от верхнего края?
Дмитрий Конуров: FrameLayout позицианирует детей по середине автоматом. Один ребенок - UI для выбора картинки (на весь экран c match_parent) другой - прогресс-бар c wrap_content
Дмитрий Конуров: Я тут ещё раз перечитал твой первый коммент. Давай ты сначала попрактикуешься годик, потом начнёшь давать советы, ок? Как это не получится библиотеками? Идея о том, что ты чего-то не знаешь, даже в голову не приходит? Какой асинктаск для загрузки картинок? Асинктаски для походов в сеть вообще нельзя использовать.
FrameLayout, как уже упоминали выше. Можно попробовать даже обойтись только FrameLayout и ImageView. Прогресс бар нарисовать в xml и нацепить на фрейм при помощи android:foreground