Android機(jī)型屏幕尺寸碎片化:5寸逝段、5.5寸垛玻、6寸等等
Android屏幕分辨率碎片化:320x480、480x800惹恃、720x1280夭谤、1080x1920
本文的三種適配? ??
? ??自定義像素適配
? ??屏幕百分比適配
? ??屏幕像素密度(修改系統(tǒng)屏幕的像素密度)
自定義像素適配
主要流程(自定義ViewGroup,在ViewGroup的onMeasure中重新去更改子View的寬高巫糙,padding,margin)
1颊乘,寫(xiě)一個(gè)util参淹,在util中定義ui設(shè)計(jì)的尺寸
2,獲取系統(tǒng)的寬高乏悄,計(jì)算出與設(shè)計(jì)稿的縮放比例
3浙值,自定義ViewGroup,重寫(xiě)onMeasure檩小,遍歷子控件开呐,計(jì)算新的寬高(記得打上Flag,因?yàn)閂iewGroup可能會(huì)多次測(cè)量)
4规求,在xml布局文件中直接寫(xiě)入設(shè)計(jì)稿中的尺寸
? ??屏幕百分比適配
1筐付,先繼承RelativeLayout
2,attrs中寫(xiě)好自定義的屬性阻肿,如寬高的百分比瓦戚,單位
3,定義一個(gè)靜態(tài)內(nèi)部類新LayoutParams繼承RelativeLayout.LayoutParams丛塌,重新去解析我們新加的屬性
4较解,重寫(xiě)generateLayoutParams(AttributeSet attrs)畜疾,將我們自己新的LayoutParams返回
4,在onmearsure中去獲取印衔,先獲取父容器的寬高啡捶,循環(huán)子控件,然后去得到子控件的布局屬性奸焙,重新計(jì)算寬高
屏幕像素密度
使用修改屏幕的Density瞎暑,ScaleDensity,DensityDpi
1忿偷,在utils中指定一個(gè)設(shè)計(jì)尺寸寬高(1920*1080)
2金顿,根據(jù)Application獲取當(dāng)前屏幕的寬高,像素密度鲤桥,縮放比例
3揍拆,通過(guò)設(shè)計(jì)尺寸的寬高與當(dāng)前屏幕的寬高,計(jì)算出縮放比例targetDensity茶凳,通過(guò)targetDensity計(jì)算出ScaleDensity嫂拴,DensityDpi=targetDensity*160;
4贮喧,通過(guò)activity去獲取DisplayMetrics筒狠,然后修改Density,ScaleDensity箱沦,DensityDpi
5辩恼,在BaseAcrivity中去調(diào)用utils,統(tǒng)一的修改
注:可能會(huì)在系統(tǒng)出修改字體的大小谓形,需要添加字體大小的監(jiān)聽(tīng)灶伊,然后去再去修改ScaleDensity