真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

薩嘎網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),薩嘎網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為薩嘎數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的薩嘎做網(wǎng)站的公司定做!

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

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

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

3.1)界面布局方面

   需要根據(jù)物理尺寸的大小準(zhǔn)備5套布局,layout(放一些通用布局xml文件,比如界面中頂部和底部的布局,不會(huì)隨著屏幕大小變化,類(lèi)似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ī)制去選擇對(duì)應(yīng)的布局和圖片資源

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

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

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

  • px

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

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

  • in

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

  • dpi

dpi是Dots Per Inch的縮寫(xiě), 每英寸點(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的縮寫(xiě),Android特有的單位,在屏幕密度dpi = 160屏幕上,1dp = 1px。

  • sp

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

layout_weight屬性

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

drawable資源

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

 

名如其意,以上是為我們的屏幕設(shè)置多分辨率支持(更準(zhǔn)確的說(shuō)是適配大、中、小三種密度)。android:anyDensity="true" ,這一句對(duì) 整個(gè)的屏幕都起著十分重要的作用,值為true,我們的應(yīng)用程序當(dāng)安裝在不同密度的手機(jī)上時(shí),程序會(huì)分別加載hdpi,mdpi,ldpi文件夾中的資 源。相反,如果值設(shè)置為false,即使我們?cè)趆dpi,mdpi,ldpi文件夾下?lián)碛型环N資源,那么應(yīng)用也不會(huì)自動(dòng)地去相應(yīng)文件夾下尋找資源,這種 情況都是出現(xiàn)在高密度,以及低密度的手機(jī)上,比如說(shuō)一部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開(kāi)始之后drawable文件被三個(gè)文件夾drawable-hdpi,drawable-mdpi,drawable-ldpi三 個(gè)文件夾所取代,有些編程人員為了讓?xiě)?yīng)用程序默認(rèn)地加載某些圖片,他們會(huì)特意地去在android2.0之后的應(yīng)用程序中重新創(chuàng)建drawable文件 夾,其實(shí)這樣做完全沒(méi)有必要,通過(guò)第一段的分析我們得知,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)去找對(duì)應(yīng)的文件夾

第二:android:anyDensity="false",

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

drawable_mdpi文件夾中的資源

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

(3)如果drawable-hdpi,drawable-mdpi中有圖片資源,drawable-ldpi中沒(méi)有對(duì)應(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)且不失真,無(wú)論橫屏還是豎屏,高分辨率還是低分辨率,都能自動(dòng)填充 滿,而且不失真等等背景問(wèn)題。 Android針對(duì)這種情況,專(zhuān)門(mén)制作了一種.9.PNG格式來(lái)解決這個(gè)問(wèn)題。draw9patch就是幫助偶們制 作.9.PNG格式資源的一個(gè)小工具。
*.9.PNG就標(biāo)準(zhǔn)的PNG格式,只是在最外面一 圈額外增加1px的邊框,這個(gè)1px的邊框就是用來(lái)定義圖片中可擴(kuò)展的和靜態(tài)不變的區(qū)域。特別說(shuō)明,left(左)和top(上)邊框中交叉部分是可拉伸 部分,未選中部分是靜態(tài)區(qū)域部分。right和bottom(下和右)邊框中交叉部分則是內(nèi)容部分。

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

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

Layout資源

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

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


網(wǎng)站欄目:Android學(xué)習(xí)--屏幕適配
URL鏈接:http://weahome.cn/article/gojpsd.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部