Android學(xué)習(xí)--屏幕適配-創(chuàng)新互聯(lián)

對于從事android應(yīng)用開發(fā)的朋友來說都應(yīng)該知道,現(xiàn)在的安卓手機(jī)的屏幕類型十分繁多, 大小尺寸,長寬比例都不盡相同,同一個(gè)界面在不同分辨率的手機(jī)上可能出現(xiàn)布局錯(cuò)亂,控件跑位的現(xiàn)象。做屏幕的適配不可能實(shí)現(xiàn)在每種屏幕上顯示出的界面 效果完全一致。只能靠平時(shí)的編程習(xí)慣和經(jīng)驗(yàn)是的界面在不同的屏幕尺寸在不會(huì)出現(xiàn)過分的走位,在可遇見范圍內(nèi)控制界面在不同屏幕下的變化,并做出相應(yīng)調(diào) 整。那么偶們應(yīng)該如何做到屏幕的適配呢?下面我就以我的開發(fā)經(jīng)驗(yàn)來說說吧。

在坪山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站建設(shè)公司,坪山網(wǎng)站建設(shè)費(fèi)用合理。

1、盡量使用線性布局(LinearLayout)和相對布局(RelativeLayout),不要使用絕對布局。

2、盡量使用dip和sp,不要使用px。

3、為不同的分辨率提供不同的布局文件和圖片。

3.1)界面布局方面

  需要根據(jù)物理尺寸的大小準(zhǔn)備5套布局,layout(放一些通用布局xml文件,比如界面中頂部和底部的布局,不會(huì)隨著屏幕大小變化,類似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間)

3.2)圖片資源方面

 需要根據(jù)dpi值準(zhǔn)備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi

Android有個(gè)自動(dòng)匹配機(jī)制去選擇對應(yīng)的布局和圖片資源

    4.能夠使用權(quán)重的地方盡量使用權(quán)重(android:layout_weight)

5.在AndroidMainfest.xml中設(shè)置多分辨率支持。

Android屏幕適配必須要理解的一些概念:

  • px

是英文單詞pixel的縮寫,意為像素,屏幕上的點(diǎn)。我們通常所說的分辨率如480X800就是指的像素。

在設(shè)計(jì)領(lǐng)域中,像素是用來計(jì)算數(shù)碼影像的最小單位。計(jì)算機(jī)中顯示的圖像并非連續(xù)的線條組成,而是由許多肉眼看不見的小點(diǎn)組成。如果把影像放大數(shù)倍,會(huì)發(fā)現(xiàn)這些連續(xù)色調(diào)其實(shí)是由許多色彩相近的小點(diǎn)所組成,這些小點(diǎn)就是構(gòu)成影像的最小單位“像素”。

  • in

表示英寸,是屏幕的物理尺寸。每英寸等于2.54厘米。例如我們經(jīng)常說的手機(jī)屏幕大小有,5(英)寸、4(英)寸就是指這個(gè)單位。這些尺寸是屏幕的對角線長度。如果手機(jī)的屏幕是4英寸,表示手機(jī)的屏幕(可視區(qū)域)對角線長度是4 X 2.54 = 10.16厘米。

  • dpi

dpi是Dots Per Inch的縮寫, 每英寸點(diǎn)數(shù),即每英寸包含像素個(gè)數(shù)。比如320X480分辨率的手機(jī),寬2英寸,高3英寸, 每英寸包含的像素點(diǎn)的數(shù)量為320/2=160dpi(橫向)或480/3=160dpi(縱向),160就是這部手機(jī)的dpi,橫向和縱向的這個(gè)值都是相同的,原因是大部分手機(jī)屏幕使用正方形的像素點(diǎn)。

  • density

屏幕密度,density和dpi的關(guān)系為 density = dpi/160

  • dp

也即dip,設(shè)備獨(dú)立像素,device independent pixels的縮寫,Android特有的單位,在屏幕密度dpi = 160屏幕上,1dp = 1px。

  • sp

和dp很類似,一般用來設(shè)置字體大小,和dp的區(qū)別是它可以根據(jù)用戶的字體大小偏好來縮放。

layout_weight屬性

這個(gè)屬性其實(shí)很好用,一般和android:layout_height="fill_parent"或 android:layout_width="fill_parent"一起使用,它用于描述該子元素在剩余空間中占有的大小比例。加入一行只有一個(gè)文本 框,那么它的默認(rèn)值就為0,如果一行中有兩個(gè)等長的文本框,那么他們的android:layout_weight值可以是同為1。如果一行中有兩個(gè)不等 長的文本框,那么他們的android:layout_weight值分別為1和2,那么第一個(gè)文本框?qū)⒄紦?jù)剩余空間的三分之二,第二個(gè)文本框?qū)⒄紦?jù)剩余 空間中的三分之一。android:layout_weight遵循數(shù)值越小,重要度越高的原則。android屏幕如此繁多,不可能都是等比例縮放的, 所以單純使用dip來設(shè)置控件也是行不通,與layout_weight屬性靈活結(jié)合使用,增強(qiáng)界面的適應(yīng)性。

drawable資源

首先:你需要在AndroidManifest.xml文件的元素如下添加子元素

<supports-screens android:anyDensity="true"  android:largeScreens="true"  android:normalScreens="true"  android:smallScreens="true"  android:xlargeScreens="true" />

名如其意,以上是為我們的屏幕設(shè)置多分辨率支持(更準(zhǔn)確的說是適配大、中、小三種密度)。android:anyDensity="true" ,這一句對 整個(gè)的屏幕都起著十分重要的作用,值為true,我們的應(yīng)用程序當(dāng)安裝在不同密度的手機(jī)上時(shí),程序會(huì)分別加載hdpi,mdpi,ldpi文件夾中的資 源。相反,如果值設(shè)置為false,即使我們在hdpi,mdpi,ldpi文件夾下?lián)碛型环N資源,那么應(yīng)用也不會(huì)自動(dòng)地去相應(yīng)文件夾下尋找資源,這種 情況都是出現(xiàn)在高密度,以及低密度的手機(jī)上,比如說一部240×320像素的手機(jī),如果設(shè)置 android:anyDensity="false",Android系統(tǒng)會(huì)將240 x 320(低密度)轉(zhuǎn)換為 320×480(中密度),這樣的 話,應(yīng)用就會(huì)在小密度手機(jī)上加載mdpi文件中的資源。
細(xì)心的人會(huì)發(fā)現(xiàn)自 android2.0開始之后drawable文件被三個(gè)文件夾drawable-hdpi,drawable-mdpi,drawable-ldpi三 個(gè)文件夾所取代,有些編程人員為了讓應(yīng)用程序默認(rèn)地加載某些圖片,他們會(huì)特意地去在android2.0之后的應(yīng)用程序中重新創(chuàng)建drawable文件 夾,其實(shí)這樣做完全沒有必要,通過第一段的分析我們得知,android:anyDensity="false",則應(yīng)用會(huì)將大小密度轉(zhuǎn)變成中密度,從而 去加載mdpi中的資源。這里同樣,當(dāng)android:anyDensity="false",則應(yīng)用會(huì)去加載mdpi中的資源。

總結(jié)一下:

第一:android:anyDensity="true",系統(tǒng)會(huì)依據(jù)屏幕密度,自動(dòng)去找對應(yīng)的文件夾

第二:android:anyDensity="false",

(1)如果drawable-hdpi,drawable-mdpi,drawable-ldpi三個(gè)文件夾中有同一張圖片資源的不同密度表示,那么系統(tǒng)會(huì)去加載

drawable_mdpi文件夾中的資源

(2)如果drawable-hpdi中有高密度圖片,其它兩個(gè)文件夾中沒有對應(yīng)圖片資源,那么系統(tǒng)會(huì)去加載drawable-hdpi中的資源。

(3)如果drawable-hdpi,drawable-mdpi中有圖片資源,drawable-ldpi中沒有對應(yīng)的圖片資源,那么系統(tǒng)會(huì)加載drawable-mdpi文件夾中的資源

注意上圖各種文件夾的不同表示。

drawable-hdpi 該圖片即適用于橫屏,也適用于豎屏

drawable-land-hdpi,當(dāng)屏幕為橫屏,且為高密度時(shí),加載此文件夾中的資源

drawable-port-hdpi,當(dāng)屏幕為豎屏,且為高密度時(shí),加載此文件夾中的資源

draw9patch工具

android SDK 包的tools目錄下為偶們提供了這么一個(gè)圖片處理工具。有時(shí)候偶們需要圖片資源自適應(yīng)且不失真,無論橫屏還是豎屏,高分辨率還是低分辨率,都能自動(dòng)填充 滿,而且不失真等等背景問題。 Android針對這種情況,專門制作了一種.9.PNG格式來解決這個(gè)問題。draw9patch就是幫助偶們制 作.9.PNG格式資源的一個(gè)小工具。
*.9.PNG就標(biāo)準(zhǔn)的PNG格式,只是在最外面一 圈額外增加1px的邊框,這個(gè)1px的邊框就是用來定義圖片中可擴(kuò)展的和靜態(tài)不變的區(qū)域。特別說明,left(左)和top(上)邊框中交叉部分是可拉伸 部分,未選中部分是靜態(tài)區(qū)域部分。right和bottom(下和右)邊框中交叉部分則是內(nèi)容部分。

Android學(xué)習(xí)--  屏幕適配

如上圖《也就是說,在手機(jī)里。無論上面那張圖怎么放大,四周的圓角都是不會(huì)被放大的!只有l(wèi)eft(左)和top(上)邊框內(nèi)才會(huì)伸縮!
在 Android中以9.PNG格式的圖片未背景,則能夠自定義拉伸而不失真,比如系統(tǒng)的Button就是一個(gè)典型的例子。其實(shí)呢,無論是left和 top,還是right和bottom都是把圖片分成9塊 (邊角四塊是不能縮放的,其他的四塊則是允許縮放的),所以叫做9.PNG。
關(guān)于draw9patch工具的使用在此不做闡述,需要的可以自己去百度一下。

Layout資源

有時(shí)候可能由于屏幕布局過于復(fù)雜,同一個(gè)布局文件很難適應(yīng)所有的屏幕分辨率。可以像drawable資源一樣,在工程的res文件夾下建立多個(gè)相應(yīng)的layout文件夾,為相應(yīng)分辨率的屏幕編寫相應(yīng)的layout文件。

文件夾的命名規(guī)范是這樣的:layout-分辨率
例如:layout-320x240 , layout-480x320等等。
系統(tǒng)就會(huì)根據(jù)運(yùn)行環(huán)境的分辨率優(yōu)先加載相應(yīng)的文件夾下的layout布局文件。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

網(wǎng)站欄目:Android學(xué)習(xí)--屏幕適配-創(chuàng)新互聯(lián)
文章位置:http://muchs.cn/article14/dhojde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、全網(wǎng)營銷推廣關(guān)鍵詞優(yōu)化、ChatGPT、App開發(fā)、域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站