1. 基本概念:
屏幕大小 :物理屏幕的大小,看屏幕的对角线。
分辨率 :实际上是像素的总和。1280*720
dpi :密度。(每英寸所展示的像素)
ldpi :320*240 ~120dpi
mdpi : 320*480 ~160dpi (参照物)
hdpi :480*800 ~240dpi
xhdpi: 1280*720 ~320dpi
缩放比例
l :m :h :x 0.75 参照 1.5 2.0
3:4:6:8 0.75分3份,一份就是0.25
480*800 dpi密度换算方法:

如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找
问1: 如果mdpi中没有图片,那在mdpi像素的手机上怎么显示图片?
答:规则--如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找。
所以它会依次向上找 hdpi,xdpi,xxdpi,把图片取出来。
① 把低像素图像拷到高分辨率手机上
没有问题,只是会变模糊
② 把高像素图像拷到低分辨率手机上
可能直接就崩溃了 (友盟网)
问2:低像素图片往上兼容,会变模糊的问题怎么解决?
答:① 用 9patch
② 之所以会拉伸,是要显示的时候才会拉伸。
如果要在大屏手机上做欢迎界面,那就要做两套图,在hdpi和xdpi中都做相应分辨率的一套图。
问3:为什么把 480*800的图片 放在hdpi中?
答:假设屏幕是 4.0的。然后根据勾股定理算出来。
问4:layout 尺寸怎么适配不同分辨率手机?
答:① 在/res下创建多个 分辨率的 values-1280*720类似的目录,dimens.xml 分配不同值。
运行时,会根据手机的分辨率找到自己合适的values-xx*xx,如果都没有就会去找默认的values目录。

② 在 /res下创建多个分辨率的 layout-1280*720类似的目录,在不同的布局中设备不同的值
③ 在java中通过 DisplayMetrics 得到手机屏幕的宽、高。然后动态设置布局参数。
Android表示单位长度的方式通常有三种表示方式:
px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
dp(dip): 是屏幕的物理尺寸。大小为1英寸的1/72。
sp:(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
设计技巧:
如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。
dp是与密度无关,sp除了与密度无关外,还与scale无关
如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。
屏幕大小 :物理屏幕的大小,看屏幕的对角线。
分辨率 :实际上是像素的总和。1280*720
dpi :密度。(每英寸所展示的像素)
ldpi :320*240 ~120dpi
mdpi : 320*480 ~160dpi (参照物)
hdpi :480*800 ~240dpi
xhdpi: 1280*720 ~320dpi
缩放比例
l :m :h :x 0.75 参照 1.5 2.0
3:4:6:8 0.75分3份,一份就是0.25
480*800 dpi密度换算方法:
如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找
问1: 如果mdpi中没有图片,那在mdpi像素的手机上怎么显示图片?
答:规则--如果4个文件夹中,某个文件夹没有图片,它就会先向上找,向上没找到再向下找。
所以它会依次向上找 hdpi,xdpi,xxdpi,把图片取出来。
① 把低像素图像拷到高分辨率手机上
没有问题,只是会变模糊
② 把高像素图像拷到低分辨率手机上
可能直接就崩溃了 (友盟网)
问2:低像素图片往上兼容,会变模糊的问题怎么解决?
答:① 用 9patch
② 之所以会拉伸,是要显示的时候才会拉伸。
如果要在大屏手机上做欢迎界面,那就要做两套图,在hdpi和xdpi中都做相应分辨率的一套图。
问3:为什么把 480*800的图片 放在hdpi中?
答:假设屏幕是 4.0的。然后根据勾股定理算出来。
问4:layout 尺寸怎么适配不同分辨率手机?
答:① 在/res下创建多个 分辨率的 values-1280*720类似的目录,dimens.xml 分配不同值。
运行时,会根据手机的分辨率找到自己合适的values-xx*xx,如果都没有就会去找默认的values目录。
② 在 /res下创建多个分辨率的 layout-1280*720类似的目录,在不同的布局中设备不同的值
③ 在java中通过 DisplayMetrics 得到手机屏幕的宽、高。然后动态设置布局参数。
+0.5f 四舍五入
DisplayMetrics displayMetrics=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Constant.displayWidth= displayMetrics.widthPixels;
Constant.displayHeight= displayMetrics.heightPixels;
LinearLayout.LayoutParams params= new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT,(int)(Constant.displayHeight*0.1f + 0.5f));
④ 用layout_weight 分配比例,不写具体值。
问5:px,dp,sp 有什么区别?
答:Android中长度单位介绍Android表示单位长度的方式通常有三种表示方式:
px:表示屏幕实际的象素。例如,320*480的屏幕在横向有320个象素,在纵向有480个象素。
dp(dip): 是屏幕的物理尺寸。大小为1英寸的1/72。
sp:(与刻度无关的像素):与dp类似,但是可以根据用户的字体大小首选项进行缩放。
设计技巧:
如果设置表示长度、高度等属性时可以使用dp 或sp。但如果设置字体,需要使用sp。
dp是与密度无关,sp除了与密度无关外,还与scale无关
如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。