android之解决屏幕大小与密度不同导致的差异

来源:互联网 发布:excel2003提取重复数据 编辑:程序博客网 时间:2024/04/29 14:37
解决屏幕大小相同分辨率不同:
dp(与密度无关的像素):
逻辑长度单位,在 160 dpi 屏幕上,1dp=1px=1/160英寸。随着密度变化,对应的像素数量也变化,但并没有直接的变化比例。
例: 
a机器:屏幕密度:160像素/英寸 此时1dp=1px=1/160英寸。
b机器:屏幕密度:240像素/英寸 此时1dp= 1px * (240/160) = 1.5px 。
dp能解决密度不同所带来的差异,但是不能解决长度不同密度相同所带来的差异:
解决分辨率相同屏幕大小不同:
如果左对齐画一张160dp大小的图片,效果会不同
例:
a机器:屏幕密度:160像素/英寸 宽1英寸  此时填满a机器屏幕
b机器:屏幕密度:160像素/英寸 宽2英寸  此时只为b机器屏幕的一半
如果b机器的显示效果要和a机器相同:图片的大小需要设置为160dp*(2/1)=320dp 此时填满b机器屏幕
综合解决屏幕密度不同屏幕大小也不同:
如果左对齐画一张160dp大小的图片,效果会不同
例:
a机器:屏幕密度:160像素/英寸 宽1英寸 此时填满a机器屏幕
b机器:屏幕密度:80像素/英寸 宽1.5英寸 此时填满b机器1英寸屏幕
如果b机器的显示效果要和a机器相同:图片的大小需要设置为160dp*(1.5/1)=240dp 此时填满b机器屏幕
所以综合解决的办法为:
1.在a机器上设计好外观
2.获得a机器组件的dp,和a机器的lenth和wide
3.获得b机器的lenth和wide, 求出b机器组件的dp-b = dp-a*(lenth-b/lenth-a)带入组件
4.系统根据b机器的屏幕密度和160dpi进行对比获得px-b = 1px*(dpi-b/160)得到最终px


原创粉丝点击