聲聲慢·尋尋覓覓
尋尋覓覓,冷冷清清乙墙,凄凄慘慘戚戚颖变。乍暖還寒時(shí)候,最難將息听想。三杯兩盞淡酒腥刹,怎敵他晚來(lái)風(fēng)急!雁過(guò)也汉买,正傷心衔峰,卻是舊時(shí)相識(shí)。
滿地黃花堆積,憔悴損垫卤,如今有誰(shuí)堪摘威彰?守著窗兒獨(dú)自,怎生得黑穴肘!梧桐更兼細(xì)雨歇盼,到黃昏點(diǎn)點(diǎn)滴滴。這次第评抚,怎一個(gè)愁字了得豹缀!
疑問(wèn)
前兩天測(cè)試講說(shuō)我們的App在不同的手機(jī)上,字體和控件會(huì)顯示不同的大小慨代,我看了下就說(shuō):微信在不同的手機(jī)上邢笙,顯示的大小也不一致!測(cè)試又說(shuō)為什么咱們不做到大小一致呢鱼响?你還別說(shuō)鸣剪,真的可以嘗試一下!于是乎我就想到了丈积,是不是可以用根據(jù)不同的手機(jī)配置不同的控件尺寸和字體大小筐骇。
- 舉個(gè)例子,在xml文件來(lái)一個(gè)寬高都是120dp的按鈕,分別在三個(gè)機(jī)子上運(yùn)行
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button
android:id="@+id/btndo"
android:layout_width="@dimen/width_size"
android:layout_height="@dimen/width_size"
android:background="@color/colorPrimary"
android:text="doSomeWork"
android:textSize="16sp" />
</RelativeLayout>
-
效果
- 圖一 紅米note2 分辨率7201280 屏幕密度2.0 屏幕密度dpi: 那就是2.0160=320
- 圖二 紅米note4 分辨率10801920屏幕密度3.0 屏幕密度dpi :那就是3.0160=480
- 圖三紅米三星G9280 分辨率10801920屏幕密度2.625 屏幕密度dpi :那就是2.625160=420
上面的你會(huì)發(fā)現(xiàn)紅米note2 和 紅米note4 雖然屏幕dpi不相同江滨,屏幕分辨率也不同但是他們的字體大小铛纬,和控件所占比例都是相同的。
而且紅米note4 和三星雖然有相同的分辨率唬滑,但是他們的控件所占比例卻不一樣告唆,而且字體也偏小。
誤區(qū)
- 以前總以為使他們的屏幕分辨率不一樣
如果解決上面的差別問(wèn)題晶密,那就要在res文件下配置不同的資源文件擒悬,如下:
在Android項(xiàng)目res的目錄下,會(huì)有values-sw360這樣的文件夾稻艰,一直以來(lái)都以為這是對(duì)應(yīng)手機(jī)的屏幕密度dpi懂牧。今天經(jīng)過(guò)一番研究發(fā)現(xiàn)并不是這樣的。其實(shí)是指對(duì)應(yīng)手機(jī)屏幕dp寬度尊勿,
- 比如三星手機(jī)的寬是1080px 密度是2.625 那么它的寬度dp = 1080/2.625= 411
- 那么紅米note4的寬是1080px 密度是3.0 那么它的寬度dp = 1080/3 = 360
所以如果寬度是120dp的控件在屏幕中所占的比例也就不同呢
證實(shí)
- 下面來(lái)證實(shí)
- 我們?cè)趓es下面新建一個(gè)values-sw410dp去對(duì)應(yīng)我的那個(gè)三星僧凤,然后建一個(gè)values-sw-360dp對(duì)應(yīng)我的紅米note4,然后分別創(chuàng)建dimens分別寫上對(duì)應(yīng)資源,讓它是屏幕寬度的一半:
<!--目錄values-sw410dp下-->
<dimen name="width_size">206dp</dimen>
<!--目錄values-sw360dp下-->
<dimen name="width_size">180dp</dimen>
<!--默認(rèn),目錄values下-->
<dimen name="width_size">120dp</dimen>
-
然后運(yùn)行程序元扔,在兩個(gè)手機(jī)運(yùn)行:
三星:
紅米note4:
是吧躯保,果然印證了我的上面說(shuō)法。
總結(jié)
這樣根據(jù)自己的需求澎语,在不同的資源文件下去配置途事,這樣可以做到?jīng)]有太大誤差了验懊,也算是符合手機(jī)適配了。字體大小也是同樣的道理盯孙。