android碎片化的解决方法,解决 Android 设备碎片化--屏幕适配
隨著支持 Android 系統(tǒng)的設(shè)備(手機(jī)、平板、電視、手表)的增多,設(shè)備碎片化、品牌碎片化、系統(tǒng)碎片化、傳感器碎片化和屏幕碎片化的程度也在不斷地加深。
在當(dāng)時(shí)初學(xué) Android 的時(shí)候,就初步接觸了這方面的概念。當(dāng)時(shí)學(xué)了六大布局:
布局 PK
當(dāng)時(shí)說了絕對(duì)布局已經(jīng)是被淘汰了的,就是因?yàn)樗粷M足屏幕適配。還有一種百分比布局,控件的位置是按百分比來控制的,在任何尺寸的手機(jī)屏幕上整體格局都是這樣顯示的,不會(huì)亂。
** 擴(kuò)展小知識(shí) **
** 屏幕尺寸 **:屏幕尺寸是指手機(jī)的對(duì)角線,單位是英寸, 1 英寸 = 2.54 厘米。現(xiàn)在常見的屏幕有 4.7(我的紅米 note 2,現(xiàn)在很少看見手機(jī)屏幕比我小的了)、5.0、 5.5、 6.0等等。
屏幕尺寸
**上圖中的 px :pixels,像素的意思,上圖中手機(jī) 分辨率 為寬 1080 px,高 1920px。 px 也就是 分辨率的單位,一個(gè)像素就是一個(gè)小點(diǎn),說明寬度有 1080 個(gè)像素小點(diǎn) **
** 像素密度(dpi: dots per inch) **:英文直譯過來就是每英寸點(diǎn)數(shù)。即 dpi = px / 英寸。
dpi 分類
4 英寸 hdpi
圖標(biāo)的各屏幕密度的對(duì)應(yīng)尺寸
** dip(dp) ( Devices Independent Pixels, 設(shè)備獨(dú)立像素):顧名思義,這個(gè)每一個(gè)設(shè)備獨(dú)立使用的像素,在不同的設(shè)備上有不同的效果,正是用來解決屏幕適配的單位。這里我一直都不是很明白,后面想了個(gè)比喻: 它可以看成上面像素單位的一個(gè)包裝,這里一像素可能等于上面幾像素,也有可能等于零點(diǎn)幾像素,這個(gè)關(guān)系由像素密度來決定,像素密度為 160 的時(shí)候, 1dip = 1px。 素密度越高,一個(gè)獨(dú)立像素為多個(gè)像素 **。
這個(gè)有兩個(gè)轉(zhuǎn)換工具方法
public static int dip2px(Context context, float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale + 0.5f);
}
public static int px2dip(Context context, float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue / scale + 0.5f);
}
** sp (Scaled Pixels) **:縮放像素,主要用來設(shè)置字體大小, best for textSize。
** 備注:根據(jù)谷歌的推薦,像素統(tǒng)一使用 dp, 字體統(tǒng)一使用 sp **
怎么實(shí)現(xiàn)屏幕適配啊
一、豎屏
使用 wrap_content:視圖的寬度或高度設(shè)置成所需的最小尺寸以適應(yīng)視圖中的內(nèi)容
使用 match_parent: 展開組件以匹配其父視圖的尺寸
這面兩個(gè)只能解決一些簡(jiǎn)單的問題。
weight,權(quán)重:在 LinearLayout 中使用,用于分配控件占總體的百分比。
** 注意 **:
一般使用權(quán)重設(shè)置時(shí),最好設(shè)對(duì)應(yīng)寬高為 0dp, 減少測(cè)量工作。
當(dāng)控件寬高為 match_parent 時(shí),控件設(shè)置的權(quán)重與總體成反比;
當(dāng)控件寬高為 wrap_content 時(shí),控件設(shè)置的權(quán)重與總體成正比;
當(dāng)只有部分控件設(shè)置了權(quán)重時(shí),先確定沒設(shè)置權(quán)重控件的寬高,再按剩下部分按比例分配。
谷歌推薦:像素使用 dp, 字體使用 sp
提供備用位圖
備用位圖
使用點(diǎn)九圖:點(diǎn)九圖可以指定圖片中部分區(qū)域拉伸,從而使圖片很多場(chǎng)合方法而不失真。
使用百分比布局:百分比布局直接支持百分比設(shè)置控件的寬高。這樣在任何尺寸的屏幕上,控件大小都是一樣的。
谷歌提供了相關(guān)支持包( android-support-percent-lib),記得使用前添加相關(guān) jar 包或者依賴哦。它提供了兩種布局,percentRelativeLayout 繼承自 RelativeLayout;percentFrameLayout 繼承自 FrameLayout。
百分比布局的相關(guān)屬性:
百分比布局的相關(guān)屬性
二、橫豎屏或手機(jī)與平板同時(shí)適配
2.1 使用限定符
2.1.1 最小尺寸限定符 res/layout(layout-large)
單面板布局:res/layout/activity_main.xml
雙面板布局:res/layout_large/activity_main.xml
2.1.2 最小寬度限定符 res/layout(layout-sw600dp)
** 但 Android 版本低于 3.2 的設(shè)備不支持此技術(shù),原因是這些設(shè)備無法將 sw600dp 識(shí)別為尺寸限定符,因此我們?nèi)孕枋褂?large 限定符。 **
** 定義 **:通過指定某個(gè)最小寬度(以 dp 為單位)來設(shè)置屏幕的大小,從而決定是否雙面板顯示。
例如使用 sw600p 指明雙面板布局盡適用最小寬度為 600dp 的屏幕,而不是適用 large 限定符。標(biāo)準(zhǔn) 7 英寸平板電腦的最小寬度為 600dp。
單面板布局:res/layout/activity_main.xml
雙面板布局:res/layout-sw600dp/activity_main.xml
2.1.3 屏幕方向限定符 land port
2.2 使用布局別名 activity_main.xml(activity_main_large.xml)
** 步驟 1** :設(shè)置好相應(yīng)布局
對(duì)應(yīng)布局
** 步驟 2 **:設(shè)置大尺寸屏幕引用的布局
設(shè)置大尺寸屏幕應(yīng)用的布局
** 步驟 3 **:設(shè)置 600dp 尺寸屏幕引用的布局
設(shè)置 600dp 尺寸屏幕引用的布局
** 說明 **:
說明
總結(jié)
以上是生活随笔為你收集整理的android碎片化的解决方法,解决 Android 设备碎片化--屏幕适配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android鼠标滚轮事件坐标,andr
- 下一篇: Android实现蝴蝶动画,Androi