1. 程式人生 > >Android螢幕適配詳解

Android螢幕適配詳解

本篇文章將解釋什麼是螢幕適配,為什麼要螢幕適配,螢幕適配的本質,和如何解決螢幕適配上的問題。(小白也能看懂哦)

什麼是螢幕適配?

    螢幕適配就是讓某一個元素或者是APP中的UI介面在不同解析度、不同尺寸的螢幕上展示出同樣的顯示效果,這就是螢幕適配。

為什麼要螢幕適配?

  因為Android系統的開放性,造成了所有的使用者都可以對Android進行定製,於是導致了很多不同的螢幕尺寸和不同的解析度,這時候就要進行螢幕適配使得我們的APP在任何裝置上都能給使用者一個相同的體驗。

螢幕適配的本質

想搞好螢幕適配首先要知道裝置的尺寸和解析度分別是多少,從而能夠根據螢幕的配置讓我們的佈局和元件能夠去自適應螢幕(也可以理解為相容)

搞明白了上邊的三個問題,我們接下來就來說說螢幕適配的解決方案。

佈局適配:

       佈局適配的解決方法就是使用相對佈局禁用絕對佈局。

開發中我們常用的佈局有:線性佈局、相對佈局、幀佈局和絕對佈局,由於絕對佈局適配性極差所以在我們在開發中很少用到絕對佈局。

對於線性佈局、相對佈局和幀佈局就需要根據需求進行選擇,但是要知道他們的特性

相對佈局:相對佈局的子控制元件使用相對位置排列所以即使螢幕大小改變了,控制元件之間的相對位置都沒有有變化,靈活性很強。
線性佈局:雖然能夠通過多層巢狀“LinearLayout”和組合使用“wrap_content

”和“match_parent”已經可以構建出足夠複雜的佈局,但是線性佈局不能準確的去控制子檢視之間的位置關係只能簡單的讓控制元件一個個的排列,很不方便,也沒有相對佈局靈活。

所以,對於螢幕適配來說,使用相對佈局將會是更好的解決方案。

佈局元件適配:

 佈局元件適配的意思就是讓佈局的元件能夠去自適應螢幕,也就是說我們可以使用"wrap_content"、"match_parent"和"weight“來控制檢視元件的寬度和高度。在這我來說一下這三個屬性的含義。

wrap_content:使用這個屬性的檢視的寬和高會被設定成所需要的最小尺寸以此來適應檢視中的內容。

match_parent:使用這個屬性的檢視的寬和高會充滿整個父佈局

weight:(權重),這個屬性是線性佈局裡的一個獨特的屬性,首先使用這個屬性對屬性設定權重,然後按照比例對介面進行分配。

​​​​​​​使用了這三個屬性,你的佈局裡的控制元件要麼只佔用了控制元件本身佔用的空間,要麼就是佔用了整個父佈局,所以我們可以根據自身的需要讓我們的空間去適應螢幕尺寸

圖片資源適配:

圖片資源適配就是讓我們的圖片資源在不同螢幕上顯示相同的效果,要實現圖片適配可以使用自動拉伸點陣圖(Nine-Patch的圖片型別)。

自動拉伸點陣圖(Nine-Patch圖片):字尾名是.9.png,它是一種被特殊處理過的PNG圖片,設計時可以指定圖片的拉伸區域和非拉伸區域;使用時,系統就會根據控制元件的大小自動地拉伸你想要拉伸的部分,需要注意的是必須要使用“.9.png”作為字尾名,因為系統就是根據這個來區別Nine-Patch圖片和普通的png圖片的。

這個方法使用的場景比較少,比如說我們在開發中給我們的按鈕設定背景圖片的時候就需要用到這個功能,因為普通的圖片無法去根據我們的控制元件去均勻的拉伸或者是壓縮我們的圖片,而這個時候就可以使用自動拉伸點陣圖去完成