Какова цель FrameLayout и в каком сценарии нам следует его использовать?
Вопрос
Какую цель имеет FrameLayout
служить на Android?Есть ли какой-то конкретный сценарий, для которого он предназначен?
В моем приложении для Android есть сценарий, в котором мне нужно показать два ImageView
с, один над другим.Это .png
файл изображения с 9-патчами, которые можно нарисовать поверх этого изображения.
Который ViewGroup
я должен использовать для этой цели: RelativeLayout
или FrameLayout
?
Я также хочу знать различные сценарии, которые может реализовать каждый из ViewGroup
s следует использовать для.
Решение
Да, вы можете использовать FrameLayout
в вашем сценарии.
Другие советы
Я не помню, как я дошел до этого вопроса, но вот мой ответ, который может помочь любому:
Как вы видете здесь
FrameLayout предназначен для блокировки области на экране для отображения одного элемента.Как правило, FrameLayout следует использовать для хранения одного дочернего представления, поскольку может быть сложно организовать дочерние представления таким образом, чтобы их можно было масштабировать до разных размеров экрана без перекрытия дочерних элементов друг друга.
В общем, бесполезно иметь два представления одно над другим, потому что вы получите эффект перерисовки (область экрана, которая прорисовывается графическим процессором более одного раза, что действительно бесполезно).
Если очень надо, то нужно использовать метод onDraw (пример можно посмотреть здесь) и Canvas API (посмотрите здесь) и метод clipRect (вы можете увидеть пример здесь)
Что касается FrameLayout или RelativeLayout, если вы хотите, чтобы все было просто или в вашей деятельности уже достаточно вложенных макетов, лучше используйте FrameLayout.В 2017 году появился макет ограничений, который также может оказаться полезным.