Android-Programmering Våren 2014
Oversikt Hva et layout er? Vanlige typer Vanlige attributter LinearLayout RelativeLayout FrameLayout TableLayout Vanlige attributter Size Margin og padding Gravity
Hva er et layout? Definerer den visuelle strukturen i et brukergrensesnitt Organiserer elementer til et View Hierarki
LinearLayout Horizontal Vertical
RelativeLayout
FrameLayout
TableLayout
Vanlige attributter Size Margin og padding Gravity
Size
Dp (density-independent pixel) til px px = dp * density density = dpi / 160 0,5 1,0 1,5 2,0 dpi «buckets» = 120, 160, 240 eller 320
mdpi xdpi (2x) 1px 1dp
Margin og Padding
Gravity android:layout_gravity android:gravity android:layout_margin android:padding
Oppsummering Vanlige typer layout Vanlige attributter LinearLayout RelativeLayout FrameLayout TableLayout Vanlige attributter Size Margin og padding Gravity
LinearLayout Gravity Weight Nested layout
LinearLayout Horizontal Vertical
LinearLayout - Gravity Horizontal Vertical
Relative Layout Relativ posisjonering Relativ alignment Hva skjer når et view forsvinner?
RelativeLayout
RelativeLayout Relativ Position Alignment I forhold til Parent Sibling
Relativt til sibling android:layout_above android:layout_below android:layout_toLeftOf android:layout_toRightOf
Relativt til parent android:layout_alignParentTop android:layout_alignParentBottom android:layout_alignParentLeft android:layout_alignParentRight android:layout_centerHorizontal android:layout_centerVertical android:layout_centerInParent
Oppsumering Relativ I forhold til Default = top left Position Alignment I forhold til Parent Sibling Default = top left
FrameLayout
Oppsumering Overlappende views Posisjoner barn med: android:foreground android:layout_gravity android:layout_margin android:foreground android:foregroundGravity
TableLayout Spanning Shrinking, Stretching og Collapsing
TableLayout
Oppsumering Hva er TableLayout? Spanning Shrinking, Stretching og Collapsing
Hvilket layout skal man bruke? Den enkleste som gjør jobben Ytelse
Ytelse Viktig når man benytter repeterer ett layout, f.eks. ListView Færre views = bedre ytelse Færre «measure passes» = bedre ytelse
Hvordan gjør Android det? Measure Layout Draw
1 - Measure 2 - Layout 3 - Draw Hello World <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:background="@color/blue" /> android:text="@string/world" android:background="@color/purple" /> </LinearLayout> 1 - Measure 2 - Layout 3 - Draw Hello World Width Height Left Top Right Bottom Hello World 65 38 65 38 74 38 65 139 38
<LinearLayout xmlns:android="http://schemas. android android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="@string/hello" android:background="@color/blue" /> android:layout_width="wrap_content" android:text="@string/world" android:background="@color/purple" /> </LinearLayout> Hello World Width Height Left Top Right Bottom Hello World 646 38 646 38 74 38 646 720 38
Hvor mange «measure passes»? LinearLayout - 1 (2 med weight) RelativeLayout - 2 FrameLayout - 1 TableLayout - 2 (3 med shrinking og stretching)
Hierarchy Viewer ViewServer Legg til INTERNET permission i manifestet https://github/.com/romainguy/ViewServer Legg til INTERNET permission i manifestet Legg til ViewServer kode i Activity TRENGS IKKE