Pieci galvenie Android izkārtojumi: FrameLayout, LinearLayout, AbsoluteLayout, RelativeLayout un TableLayout

Five Major Android Layouts



Android SDK nosaka dažādas izkārtojuma metodes, lai atvieglotu lietotāja dizaina lietotāja saskarni. Katra izkārtojuma metode ir klases ViewGroup apakšklase, un struktūra parādīta 1. attēlā.

Android SDK izkārtojuma struktūras shēma
1 Android SDK
1. attēls Android SDK izkārtojuma struktūras shēma



Šajā sadaļā īsi tiks iepazīstināts ar FrameLayout (viena kadra izkārtojums), LinearLayout (lineārs izkārtojums), AbsoluteLayout (absolūtais izkārtojums), RelativeLayout (relatīvais izkārtojums) un TableLayout (tabulas izkārtojums).



FrameLayout
FrameLayout, kas pazīstams arī kā viena kadra izkārtojums, ir vienkāršākā izkārtojuma metode starp Android piedāvātajām izkārtojuma metodēm. Tas norāda tukšu laukumu ekrānā un aizpilda vienu objektu šajā apgabalā. Piemēram, attēli, teksts, pogas utt.



Lietojumprogrammu izstrādātāji nevar norādīt noteiktu aizpildīšanas pozīciju FrameLayout aizpildītajiem komponentiem. Pēc noklusējuma šie komponenti tiks fiksēti ekrāna augšējā kreisajā stūrī, un vēlāk ievietotie komponenti tiks novietoti uz iepriekšējā komponenta, lai to pārklātu un aizpildītu, veidojot daļu Bloķēt vai bloķēt visus.

Izstrādātāji var veikt atbilstošas ​​modifikācijas komponenta atrašanās vietā, izmantojot komponenta android: layout_gravity atribūtu.

FrameLayoutDemo piemērs parāda FrameLayout izkārtojuma efektu. Šajā izkārtojumā ir 4 TextView komponenti. Pirmie 3 komponenti pēc noklusējuma tiek ievietoti izkārtojumā. Ceturtais komponents tiek ievietots izkārtojumā pēc gravitācijas īpašības modificēšanas. Skriešanas efekts parādīts 2. attēlā.
2 FrameLayout
Izkārtojuma faila main.xml kods FrameLayoutDemo piemērā ir šāds:



FrameLayoutDemo First layer Second layer Third layer Fourth layer

starp viņiem:
android: layout_width = “wrap_content”
android: layout_height = “wrap_content”

Norāda, ka FrameLayout izkārtojums aptver visu ekrāna vietu.

Faila strings.xml saturs FrameLayoutDemo piemērā ir šāds:

<?xml version='1.0' encoding='UTF-8'?> <resources> <string name='app_name'>LinearLayoutDemo</string> <string name='red'>red</string> <string name='yellow'>yellow</string> <string name='green'>green</string> <string name='blue'>blue</string> <string name='row1'>row one</string> <string name='row2'>row two</string> <string name='row3'>row three</string> <string name='row4'>row four</string> </resources>

Pēc rezultātiem pēc palaišanas var redzēt, ka pirmie trīs TextView komponenti, kas ievietoti FrameLayout, tiek uzklāti ar ekrāna augšējo kreiso stūri kā bāzes punktu. Ceturtais TextView tiek parādīts zem izkārtojuma Android: layout_gravity = “bottom” rekvizīta dēļ. Varat modificēt atribūta android: layout_gravity vērtību citiem atribūtiem, lai redzētu skriešanas efektu.

LinearLayout
Android skata dizainā visbiežāk izmantotajam izkārtojumam jābūt LinearLayout, kas pazīstams arī kā lineārais izkārtojums. Šajā izkārtojumā tajā ievietotos komponentus var kārtīgi izkārtot horizontāli vai vertikāli. Konkrēto kārtību nosaka atribūts android: orientation, un katra izkārtojuma komponenta svaru nosaka svara atribūts.

LinearLayoutDemo piemērs parāda LinearLayout izkārtojuma izmantošanu, efekts parādīts 3. attēlā.
3 LinearLayout
LinearLayoutDemo piemērā faila strings.xml kods ir šāds:

<?xml version='1.0' encoding='utf-8'?> <LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='fill_parent' android:layout_height='fill_parent' android:orientation='vertical'> <LinearLayout android:layout_width='fill_parent' android:layout_height='fill_parent' android:layout_weight='1' android:orientation='horizontal'> <TextView android:layout_width='wrap_content' android:layout_height='fill_parent' android:layout_gravity='center_horizontal' android:layout_weight='1' android:background='#aa0000' android:text='@string/red' /> <TextView android:layout_width='wrap_content' android:layout_height='fill_parent' android:layout_gravity='center_horizontal' android:layout_weight='1' android:background='#00aa00' android:text='@string/green' /> <TextView android:layout_width='wrap_content' android:layout_height='fill_parent' android:layout_gravity='center_horizontal' android:layout_weight='1' android:background='#0000aa' android:text='@string/blue' /> <TextView android:layout_width='wrap_content' android:layout_height='fill_parent' android:layout_gravity='center_horizontal' android:layout_weight='1' android:background='#aaaa00' android:text='@string/yellow' /> </LinearLayout> <LinearLayout android:layout_width='fill_parent' android:layout_height='fill_parent' android:layout_weight='1' android:orientation='vertical'> <TextView android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_weight='1' android:text='@string/row1' android:textSize='15pt' /> <TextView android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_weight='1' android:text='@string/row2' android:textSize='15pt' /> <TextView android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_weight='1' android:text='@string/row3' android:textSize='15pt' /> <TextView android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_weight='1' android:text='@string/row4' android:textSize='15pt' /> </LinearLayout> </LinearLayout>

Piemērs LinearLayoutDemo izkārtojuma fails main.xml ir šāds:

<?xml version='1.0' encoding='utf-8'?> <RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='fill_parent' android:layout_height='fill_parent'> <TextView android:id='@+id/label' android:layout_width='fill_parent' android:layout_height='wrap_content' android:text='@string/hello' /> <EditText android:id='@+id/enter' android:layout_width='fill_parent' android:layout_height='wrap_content' android:layout_alignParentLeft='true' android:layout_below='@+id/label' /> <Button android:id='@+id/button1' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_alignParentRight='true' android:layout_below='@+id/enter' android:text='@string/butltext' /> <Button android:id='@+id/ok' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_alignBottom='@+id/button1' android:layout_alignParentLeft='true' android:text='@string/but2text' /> </RelativeLayout>

Šajā izkārtojumā tiek ievietoti divi LinearLayout izkārtojuma objekti.

Pirmajā LinearLayout izkārtojumā tiek izmantots atribūts android: orientation = 'horizontal', lai iestatītu izkārtojumu horizontālā lineārā izkārtojumā.

Otrajā LinearLayout izkārtojumā tiek izmantots atribūts android: orientation = “vertical”, lai izkārtojumu iestatītu uz vertikālu lineāru izkārtojumu.

Katrā LinearLayout izkārtojumā ir ievietoti 4 TextView attēli, un atribūts android: layout_weight tiek izmantots, lai iestatītu katra komponenta proporcijas izkārtojumā vienādu, tas ir, katra komponenta lielums ir vienāds.

layout_weight tiek izmantots, lai definētu komponenta nozīmi lineārā izkārtojumā. Visām sastāvdaļām ir izkārtojuma_masa vērtība, kas pēc noklusējuma ir 0. Tas nozīmē, ka ir jāparāda tik daudz vietas ekrānā. Ja piešķīruma vērtība ir lielāka par 0, pieejamā vieta tiek sadalīta, un sadalījuma lielums ir atkarīgs no pašreizējā izkārtojuma_masas un citu atstarpju izkārtojuma_svara vērtības attiecības.

Piemēram, horizontālā virzienā ir divas pogas, un katras pogas izkārtojuma_masa vērtība tiek iestatīta uz 1, pēc tam abas pogas dala platumu, ja pirmā ir 1, otrā ir 2, atstarpi var sadalīt ar vienu trešdaļu Dodiet to pirmajai un divas trešdaļas otrajai.

Piešķiriet LinearLayoutDemo LinearLayoutDemo 4. textView rekvizītu android: layout_weight 2 un darbības efekts ir parādīts 4. attēlā.
4 android: izkārtojums_svars
LinearLayout var izmantot ligzdošanu. Izmantojot LinearLayou izkārtojumu, var noformēt dažādas skaistas izkārtojuma metodes.
RelativeLayout
RelativeLayout sauc arī par relatīvo izkārtojumu. Kā redzat pēc nosaukuma, šis izkārtojums ir izkārtojums, kas ļauj komponentus ievietot attiecībā pret konteineru vai attiecībā pret citu konteinera komponentu.

Izkārtojums RelativeLayout nodrošina dažas parasti izmantotās izkārtojuma iestatīšanas īpašības, lai noteiktu komponentu relatīvo pozīciju skatā. Tālāk ir uzskaitītas ar relatīvo izkārtojumu saistītās īpašības un to apzīmētā nozīme.

RelativeLayout kopīgie atribūti

Atribūti apraksts
android: layout_above = '@ id / xxx' Novietojiet vadības ierīci virs norādītās ID vadības ierīces
android: layout_below = '@ id / xxx' Novietojiet vadību zem norādītās ID vadības
android: layout_toLeftOf = '@ id / xxx' Izlīdziniet vadības ierīces labo malu ar norādītās ID vadības ierīces kreiso malu
android: layout_toRightOf = '@ id / xxx' Izlīdziniet vadības ierīces kreiso malu ar norādītās ID vadības labo malu
android: layout_alignBaseline = '@ id / xxx' Saskaņojiet vadības bāzes līniju ar norādītā ID bāzes līniju
android: layout_alignTop = '@ id / xxx' Saskaņojiet vadības ierīces augšējo malu ar norādītās ID vadības ierīces augšējo malu
android: layout_alignBottom = '@ id / xxx' Saskaņojiet vadības ierīces apakšējo malu ar norādītās ID vadības ierīces apakšējo malu
android: layout_alignLeft = '@ id / xxx' Izlīdziniet vadības ierīces kreiso malu ar norādītās ID vadības ierīces kreiso malu
android: layout_alignRight = '@ id / xxx' Izlīdziniet vadības ierīces labo malu ar norādītās ID vadības ierīces labo malu
android: layout_alignParentLeft = “true” Izlīdziniet vadības ierīces kreiso malu ar vecāku vadības ierīces kreiso malu
android: layout_alignParentTop = “true” Izlīdziniet vadības ierīces augšējo malu ar vecāku vadības ierīces augšējo malu
android: layout_alignParentRight = “true” Izlīdziniet vadības ierīces labo malu ar vecāku vadības labo malu
android: layout_alignParentBottom = “true” Saskaņojiet vadības ierīces apakšējo malu ar vecāku vadības ierīces apakšējo malu
android: layout_centerInParent = “true” Novietojiet vadību vecāku vadības centrā
android: layout_centerHorizontal = “true” Centrējiet vadību horizontāli
android: layout_centerVertical = “true” Centrējiet vadību vertikāli

RelativeLayoutDemo piemērs parāda relatīvā izkārtojuma izmantošanu, un tā darbības efekts ir parādīts 5. attēlā.
5 RelativeLayout
Piemērs RelativeLayoutDemo izkārtojuma fails main.xml ir šāds:

<?xml version='1.0' encoding='UTF-8'?> <resources> <string name='hello'>Hello World,TableLayout!</string> <string name='app_name'>TableLayoutDemo</string> <string name='column1'>First row first column</string> <string name='column2'>First row second column</string> <string name='column3'>First row third column</string> <string name='empty'>The leftmost scalable TextView</string> <string name='row2column2'>Second row third column</string> <string name='row2column3'>End</string> <string name='merger'>Merge three cells</string> </resources>

RelativeLayout izkārtojuma process ir šāds:

1) Ievietojiet TextView komponentu ar ID etiķeti.

2) Ievietojiet komponentu EditText with ID enter zem TextView caur android: layout_below = '@ + id / label' atribūtu.

3) Izkārtojumam pievienojiet pogu ar pogu1, novietojiet pogu zem ievadīšanas caur android: layout_below = '@ + id / enter' atribūtu un ievietojiet pogu relatīvajā izkārtojumā, izmantojot android: layout_alignParentRight = 'true' atribūts Pa labi.

4) Pievienojiet relatīvajam izkārtojumam pogu ar nosaukumu OK, izlīdziniet pogas apakšējo malu ar button1 caur android: layout_alignBottom = '@ + id / button1' atribūtu un ievietojiet pogu apakšā ar android: layout_alignParentLeft = ' Atribūts true 'Izkārtojuma kreisā puse.

Tabulas izkārtojums
TableLayout, kas pazīstams arī kā tabulas izkārtojums, pārvalda komponentus rindās un kolonnās.

Izkārtojumam TableLayout nav robežu, un to var veidot no vairākiem TableRow objektiem vai citiem komponentiem. Katru TableRow var veidot vairākas šūnas, un katra šūna ir skats. TableRow nav jāiestata platums layout_width un height layout_height, platumam jābūt match_parent, tas ir, vecāku konteiners tiek automātiski aizpildīts, un augstumam jābūt wrap_content, kas maina augstumu atbilstoši saturam. Bet citiem TableRow komponentiem varat iestatīt platumu un augstumu, taču tam ir jābūt wrap_content vai fill_parent.

TableLayoutDemo piemērs parāda TableLayout izmantošanas metodi, lai izveidotu lietotāja saskarni, efekts parādīts 6. attēlā.
6 Galda izkārtojums
Piemērs Strings.xml kods tabulā TableLayoutDemo ir šāds:

<?xml version='1.0' encoding='utf-8'?> <TableLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='fill_parent' android:layout_height='fill_parent'> <TableRow> <TextView android:text='@string/column1' /> <TextView android:text='@string/column2' /> <TextView android:text='@string/column3' /> </TableRow> <TextView android:layout_height='wrap_content' android:background='#fff000' android:gravity='center' android:text='Single TextView' /> <TableRow> <Button android:layout_span='3' android:gravity='center_horizontal' android:text='@string/merger' android:textColor='#f00' /> </TableRow> <TextView android:layout_height='wrap_content' android:background='#fa05' android:text='Single TextView' /> <TableRow android:layout_height='wrap_content'> <TextView android:text='@string/empty' /> <Button android:text='@string/row2column2' /> <Button android:text='string/row2column3' /> </TableRow> </TableLayout>

Piemērs TableLayoutDemo izkārtojuma faila main.xml kods ir šāds:

<?xml version='1.0' encoding='utf-8'?> <AbsoluteLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent' > <Button android:id='@+id/button1' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_x='32px' android:layout_y='53px' android:text='Button' /> <Button android:id='@+id/button2' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_x='146px' android:layout_y='53px' android:text='Button' /> <Button android:id='@+id/button3' android:layout_width='wrap_content' android:layout_height='wrap_content' android:layout_x='85px' android:layout_y='135px' android:text='Button' /> </AbsoluteLayout>

Izkārtojuma fails main.xml TableLayout izkārtojumā pievieno divas TableRows un divas TextViews, veidojot 6. attēlā redzamo efektu. Spriežot pēc skriešanas efekta, ne pirmo, ne piekto rindu nevar pilnībā parādīt.

Izkārtojums TableLayout nodrošina vairākas īpašas īpašības, ar kurām var sasniegt šādus īpašos efektus.
android: shrinkColumns atribūts: Šis atribūts tiek izmantots, lai iestatītu saraujamas kolonnas. Kad saliekamā kolonna ir pārāk plaša, lai parādītu citas izkārtojuma kolonnas, saliekamā kolonna izstiepsies vertikāli, saspiežot pašas aizņemto vietu, lai pārējās kolonnas varētu pilnībā parādīt. android: shrinkColumns = '1' norāda, ka otrā kolonna ir iestatīta kā saraujama kolonna un kolonnu skaits sākas no 0.
android: stretchColumns atribūts: Šis atribūts tiek izmantots, lai iestatītu izstiepamas kolonnas. Izstiepjamā kolonna automātiski pagarinās garumu, lai aizpildītu visu pieejamo vietu. android: stretchColumns = '1' norāda, ka otrā kolonna ir iestatīta kā izvelkama kolonna.
android: collapseColumns atribūts: Šis atribūts tiek izmantots, lai iestatītu slēptās kolonnas. android: collapseColumns = '1' nozīmē paslēpt otro kolonnu no displeja.

Pievienojiet tagam atribūtu android: shrinkColumns = '0' un palaidiet to vēlreiz. Efekts parādīts 7. attēlā. Var redzēt, ka pirmā un piektā rinda ir pilnībā parādīta.
7
AbsoluteLayout
AbsoluteLayout sauc arī par absolūto izkārtojumu. Šajā izkārtojumā ievietotajiem komponentiem ir jānorāda to precīzās koordinātu vērtības, izmantojot divas īpašības: android: layout_x un android: layout_y, un tās jāparāda ekrānā.

Teorētiski AbsoluteLayout izkārtojumu var izmantot, lai pabeigtu jebkuru izkārtojuma dizainu, ar lielu elastību, taču nav ieteicams izmantot šo izkārtojumu faktiskajās inženierijas lietojumprogrammās. Tā kā, izmantojot šo izkārtojumu, ir nepieciešams ne tikai precīzi aprēķināt katra komponenta izmēru un palielināt aprēķina apjomu, bet arī radīt dažādus efektus, ja lietojumprogramma darbojas mobilajos tālruņos ar dažādu ekrāna izmēru.

AbsoluteLayoutDemo piemērs parāda AbsoluteLayout izkārtojuma izmantošanu, efekts parādīts 8. attēlā.
8 AbsoluteLayout
AbsoluteLayoutDemo izkārtojuma faila main.xml koda piemērs ir šāds:

<uses-permission android:name='android.permission.INTERNET' />

starp viņiem:
android: layout_x = “85px”
android: layout_y = '135 pikseļi'

Tas norāda, ka komponents ir novietots zem koordinātu sistēmas ar ekrāna augšējo kreiso stūri kā koordinātu izcelsmi, x vērtība ir 85 pikseļi un y vērtība ir 135 pikseļi.

Šeit ir īss ievads par Android sistēmā parasti izmantotajām izmēru vienībām.
Pikselis: saīsināts kā px. Pārstāv fiziskos pikseļus ekrānā.
Punkts: punkti, saīsināti kā pt. 1pt ir vienāds ar 1/72 collas, un to parasti izmanto poligrāfijas nozarē.
Palielināti pikseļi: sp. Galvenokārt fontu attēlošanai Android pēc noklusējuma izmanto sp kā fonta lieluma vienību.
No blīvuma neatkarīgi pikseļi: saīsināti kā dip vai dp. Šim izmēram kā atsauce tiek izmantots 160dp ekrāns, un pēc tam izmantojiet ekrānu, lai kartētu uz faktisko ekrānu, dažādos izšķirtspējas ekrānos būs atbilstošs tālummaiņas efekts, ko pielietot dažādu izšķirtspējas ekrāniem. Ja izmantojat px, 320 pikseļi aizņem HVGA platumu, un WVGA var aizņemt tikai mazāk nekā pusi no ekrāna. Tas nedrīkst būt tas, ko vēlaties.
mm: mm.
WebView
WebView komponents ir AbsoluteLayout apakšklase un tiek izmantots tīmekļa lapu parādīšanai. Ar WebView palīdzību jūs varat viegli izveidot savu tīmekļa pārlūkprogrammu. Šeit tiek ieviests tikai WebView pamata lietojums, un, apgūstot Web lietotni vēlāk, būs papildu skaidrojums.

Izveidojiet projektu WebViewDemo, pievienojiet interneta piekļuves atļaujas failā AndroidManifest.xml:

<?xml version='1.0' encoding='utf-8'?> <LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='fill_parent' android:layout_height='fill_parent' android:orientation='vertical'> <WebView android:id='@+id/webView1' android:layout_width='match_parent' android:layout_height='match_parent'/> </LinearLayout>

Pievienojiet WebView komponentu izkārtojuma failam main.xml. Main.xml saturs ir šāds:

package introduction.android.webView import android.app.Activity import android.os.Bundle import android.webkit.WebView public class WebViewDemoActivity extends Activity { private WebView webView /** * Called when the acctivity is first crested. */ @Override public void onCreate(Bundle saveInstanceState) { super.onCreate(saveInstanceState) setContentView(R.layout.main) webView = (WebView) findViewById(R.id.webView1) webView.getSettings().setJavaScriptEnabled(true) webView.loadUrl('http://www.google.com') } }

WebViewDemo darbības faila WebViewDemoActivity.java koda piemērs ir šāds:

Darbības efekts parādīts 9. attēlā:
9 WebViewDemo