細說
layout_weight
目前最為推薦的
android多螢幕自適應解決方案。
該屬性的作用是決定控制項在其父布局中的顯示權重,一般用於線性布局中。
其值越小,則對應的layout_width或layout_height的優先順序就越高,
一般橫向布局中,決定的是
layout_width
的優先順序;縱向布局中,決定的是
layout_height
的優先順序。
傳統的layout_weight使用方法是將當前控制項的layout_width和layout_height都設定成fill_parent,這樣就可以把控制項的顯示比例完全交給layout_weight;這樣使用的話,就出現了layout_weight越小,顯示比例越大的情況。不過對於2個控制項還好,如果控制項過多,且顯示比例也不相同的時候,控制起來就比較麻煩了,畢竟反比不是那麼好確定的。
於是就有了現在最為流行的
0px設值法。看似讓人難以理解的layout_height=0px的寫法,結合layout_weight,卻可以使控制項成正比例顯示,輕鬆解決了當前android開發最為頭疼的碎片化問題之一。
先看下面的
styles(style_layout.xml)
xml version="1.0" encoding="utf-8"可以看到,layout_width和layout_height兩個屬性被我封裝成了4個style?>
<
resources
>
<
style
name
="layout_full"
>
<
item
name
="android:layout_width"
>fill_parent
item
>
<
item
name
="android:layout_height"
>fill_parent
item
>
style
>
<
style
name
="layout_wrap"
>
<
item
name
="android:layout_width"
>wrap_content
item
>
<
item
name
="android:layout_height"
>wrap_content
item
>
style
>
<
style
name
="layout_horizontal"
parent
="layout_full"
>
<
item
name
="android:layout_width"
>0px
item
>
style
>
<
style
name
="layout_vertical"
parent
="layout_full"
>
<
item
name
="android:layout_height"
>0px
item
>
style
>
resources
>
根據實際布局情況,選用當中的一種,不需要自己設定,看過我前乙個activitygroup的demo的同學應該非常熟悉了
然後我的demo的布局如下(weight_layout.xml)
xml version="1.0" encoding="utf-8"整個介面布局看起來非常直觀,只是巢狀的邏輯要自己理下。顯示效果如下圖,其中左面乙個是480x800的介面,右面的是320x480的介面(後面的圖也如此),可以看出顯示比例和**中完全一致,我就不多說了,大家對照下就能看出來了。?>
<
linearlayout
xmlns:android
=""style
="@style/layout_full"
android:orientation
="vertical"
>
<
linearlayout
style
="@style/layout_vertical"
android:layout_weight
="1"
android:orientation
="horizontal"
>
<
view
style
="@style/layout_horizontal"
android:background
="#aa0000"
android:layout_weight
="1"
/>
<
view
style
="@style/layout_horizontal"
android:background
="#00aa00"
android:layout_weight
="4"
/>
<
view
style
="@style/layout_horizontal"
android:background
="#0000aa"
android:layout_weight
="3"
/>
<
view
style
="@style/layout_horizontal"
android:background
="#aaaaaa"
android:layout_weight
="2"
/>
linearlayout
>
<
linearlayout
style
="@style/layout_vertical"
android:layout_weight
="2"
android:orientation
="vertical"
>
<
view
style
="@style/layout_vertical"
android:background
="#ffffff"
android:layout_weight
="4"
/>
<
view
style
="@style/layout_vertical"
android:background
="#aa0000"
android:layout_weight
="3"
/>
<
view
style
="@style/layout_vertical"
android:background
="#00aa00"
android:layout_weight
="2"
/>
<
view
style
="@style/layout_vertical"
android:background
="#0000aa"
android:layout_weight
="1"
/>
linearlayout
>
linearlayout
>
Android螢幕自適應解析
先了解下api中的工具類 android.util.displaymetrics 最主要的顯示引數。獲得displaymetrics可以通過2種方式 1.在activity中使用activity.getresources getdisplaymetrics 2.新建乙個例項,通過display類的工...
android 自適應 多螢幕支援
1 螢幕相關概念 1.1解析度 是指螢幕上有橫豎各有多少個畫素 1.2螢幕尺寸 指的是手機實際的物理尺寸,比如常用的2.8英吋,3.2英吋,3.5英吋,3.7英吋 android將螢幕大小分為四個級別 small,normal,large,and extra large 1.3螢幕密度 每英吋畫素數...
android 自適應 多螢幕支援
android 自適應 多螢幕支援 1 螢幕相關概念 1.1解析度 是指螢幕上有橫豎各有多少個畫素 1.2螢幕尺寸 手機螢幕尺寸指的是手機實際的物理尺寸,即螢幕的實際大小。android將螢幕大小分為四個級別 small,normal,large,and extra large 1.3螢幕密度dpi...