Каква е целта на FrameLayout и в какъв сценарий трябва да го използваме?

Каква е целта на FrameLayout в Android? Има ли някакъв конкретен сценарий, за който е предназначен?

В моето приложение за Android имам сценарий, при който трябва да покажа два ImageView, един върху друг. Това е .png файл с изображение с 9-кръпки, които могат да бъдат изчертани върху това изображение.

Кое ViewGroup да използвам за тази цел: RelativeLayout или FrameLayout?

Също така искам да знам различните сценарии, за които трябва да се използва всеки от ViewGroups.


person Ankit    schedule 21.05.2012    source източник


Отговори (2)


Да, можете да използвате FrameLayout във вашия сценарий.

person c2dm    schedule 21.05.2012
comment
Мога ли да използвам или трябва да използвам? :) Има ли някакви проблеми с производителността, свързани с използването на Frame или Relative оформление? Надявам се, че разбирате моята гледна точка. - person Ankit; 21.05.2012
comment
@Ankit Не съм сигурен относно проблемите с производителността (бих предположил, че FrameLayout има по-малък отпечатък от паметта, защото е по-прост). FrameLayout е много по-лесен за конфигуриране (само Gravity.LEFT, Gravity.RIGHT и т.н.) RelativeLayout е много по-сложен и по-лесно конфигурируем. Просто изберете сложността, от която се нуждаете за ситуацията. - person Ancantus; 21.05.2012

Не си спомням как стигнах до този въпрос, но ето моят отговор, който може да помогне на всеки:

Както можете да видите тук

FrameLayout е предназначен да блокира област на екрана, за да покаже един елемент. Като цяло FrameLayout трябва да се използва за задържане на един дъщерен изглед, тъй като може да бъде трудно да се организират дъщерни изгледи по начин, който е мащабируем до различни размери на екрана, без децата да се припокриват.

По принцип не е полезно да имате 2 изгледа един върху друг, защото ще имате ефект на преначертаване (област от екрана, която се рисува от графичния процесор повече от веднъж, което наистина е безполезно).

Ако наистина трябва, тогава трябва да използвате метода onDraw (можете да видите пример тук) и Canvas API (разгледайте тук) и метода clipRect (можете да видите пример тук)

По отношение на FrameLayout или RelativeLayout, ако искате да запазите нещата прости или вашата дейност вече има достатъчно вложени оформления, по-добре използвайте FrameLayout. През 2017 г. има оформлението на ограниченията, което също може да бъде от полза.

person alkas    schedule 16.11.2017