7

Che scopo ha il servizio FrameLayout in Android? C'è qualche scenario specifico per cui è stato progettato?Qual è lo scopo di FrameLayout e in quale scenario dovremmo utilizzarlo?

Nella mia applicazione Android, ho uno scenario in cui devo mostrare due ImageView s, uno sopra l'altro. Questo è un file di immagine .png con un drawable di 9 patch su questa immagine.

Quale ViewGroup devo utilizzare per questo scopo: RelativeLayout o FrameLayout?

Desidero anche conoscere i diversi scenari per cui è necessario utilizzare ciascuno degli ViewGroup s.

risposta

-4

Sì, è possibile utilizzare uno FrameLayout nello scenario.

+0

Posso usare o dovrei usare? :) Vi sono problemi di prestazioni relativi all'utilizzo del layout Frame o Relative? Spero tu stia ottenendo il mio punto. – Ankit

+2

@Ankit Non sono sicuro dei problemi di prestazioni (suppongo che 'FrameLayout' abbia un minore ingombro di memoria, perché è più semplice). 'FrameLayout' è molto più facile da configurare (solo' Gravity.LEFT', 'Gravity.RIGHT' ecc.)' RelativeLayout' è molto più complicato e più configurabile. Basta scegliere la complessità di cui hai bisogno per la situazione. – Ancantus

0

Non mi ricordo come sono arrivato a questa domanda, ma qui è la mia risposta che potrebbe aiutare chiunque:

Come si può vedere here

FrameLayout è stato progettato per bloccare un'area sulla schermo per visualizzare un singolo oggetto. In genere, FrameLayout deve essere utilizzato per contenere una visualizzazione figlio singola, poiché può essere difficile organizzare le viste secondarie in un modo che sia scalabile a diverse dimensioni dello schermo senza che i bambini si sovrappongano l'un l'altro.

in generale non è utile avere 2 vista uno sopra l'altro, perché si sta andando ad avere effetto overdraw (un'area dello schermo che sta ottenendo disegnato dalla GPU più di una volta che è davvero inutile).

Se davvero necessario, allora avete bisogno di utilizzare il metodo OnDraw (potete vedere un esempio here) e API tela (date un'occhiata here) e il metodo clipRect (potete vedere un esempio here)

Per quanto riguarda FrameLayout o RelativeLayout, se vuoi mantenere le cose semplici o la tua attività ha già abbastanza layout nidificati, meglio usare FrameLayout. Nel 2017 c'è anche la disposizione dei vincoli che potrebbe essere di aiuto.