android 螢幕自適應

2021-08-27 10:37:40 字數 4088 閱讀 1598

細說

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"

?>

<

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

>

可以看到,layout_width和layout_height兩個屬性被我封裝成了4個style

根據實際布局情況,選用當中的一種,不需要自己設定,看過我前乙個activitygroup的demo的同學應該非常熟悉了

然後我的demo的布局如下(weight_layout.xml)

xml version="1.0" encoding="utf-8"

?>

<

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

>

整個介面布局看起來非常直觀,只是巢狀的邏輯要自己理下。顯示效果如下圖,其中左面乙個是480x800的介面,右面的是320x480的介面(後面的圖也如此),可以看出顯示比例和**中完全一致,我就不多說了,大家對照下就能看出來了。

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...