建议使用以下浏览器,以获得最佳体验。 ie 9.0 以上版本 chrome 31 谷歌浏览器 firefox 30 火狐浏览器
温馨提示

抱歉,您需设置社区昵称后才能参与社区互动!

前往修改
我再想想
选择版块
主题:4132帖子:34815

【技术干货】

简单介绍屏幕适配(三种常用方案)

2022/5/6 459

简单介绍屏幕适配(三种常用方案)

1、(px):

含义:通常所说的像素,就是ccd/cmos上光电感应元件的数量,一个感光元件经过感光,光电信号转换,a/d转换等步骤以后,在输出的照片上就形成一个点,我们如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(pixel)。简而言之,像素就是手机屏幕的最小构成单元。

单位:px(pixel),1px = 1像素点 一般情况下ui设计师的设计图会以px作为统一的计量单位。

2、分辨率:

含义:手机在横向、纵向上的像素点数总和 一般描述成 宽*高 ,即横向像素点个数 * 纵向像素点个数(如1080 x 1920)。

单位:px(pixel),1px = 1像素点

3、屏幕尺寸(in):

含义:手机对角线的物理尺寸

单位 英寸(inch),一英寸大约2.54cm 常见的尺寸有4.7寸、5寸、5.5寸、6寸

4、屏幕像素密度(dpi):

含义:每英寸的像素点数。 例如每英寸内有160个像素点,则其像素密度为160dpi。

单位:dpi(dots per inch)

计算公式: 像素密度 = 像素 / 尺寸 (dpi = px / in)

标准屏幕像素密度(mdpi): 每英寸长度上还有160个像素点(160dpi),即称为标准屏幕像素密度(mdpi)

密度类型 代表的分辨率(px) 屏幕密度(dpi) 换算(px/dp) 比例 图片px
低密度(ldpi) 240x320 120 1dp=0.75px 3 3636
中密度(mdpi) 320x480 160 1dp=1px 4 48
48
高密度(hdpi) 480x800 240 1dp=1.5px 6 7272
超高密度(xhdpi) 720x1280 320 1dp=2px 8 96
96
超超高密度(xxhdpi) 1080x1920 480 1dp=3px 12 144*144

一.autolayout 用法 鸿洋地址 https://blog.csdn.net/qq_37237245/article/details/78134010

1、将autolayout引入

dependencies {
compile project(’:autolayout’)
}

也可以直接

dependencies {
compile ‘com.zhy:autolayout:1.4.5’
}

2、标明设计稿尺寸

在androidmanifest

3、使用时候有两种用法:

一种是让你的activity继承自autolayoutactivity.一般可以把你的基类继承autolayoutactivity

如果你觉得这种对你的activity改变太大等等,,,

那么,你可以将你的布局替换成

linearlayout -> autolinearlayout
relativelayout -> autorelativelayout
framelayout -> autoframelayout

系统原有的属性都会保留。

ps:几个注意事项

1、可以多用margin,减少嵌套,因为不需要考虑适配问题,所以,可以直接margin固定距离尺寸等等,

linearlayout的weight也不需要,直接每个布局设置相同宽度即可。

2、textview使用中发现很多问题,直接用px会出现高度不对问题。鸿洋这样解释:设计稿一般只会标识一个字体的大小

,比如你设置textsize=”20px”,实际上textview所占据的高度肯定大于20px,字的上下都会有一定的间隙,所以一定要

灵活去写字体的高度,比如对于text上下的margin可以选择尽可能小一点。或者选择别的约束条件去定位(比如上例,选

择了marginbottom)

但是更简单的处理方式是,我们的字体尺寸可以继续用sp.

3、在listview ,recycleview 或者一些布局我们无法转换为autoxxx的布局,我们想为子布局做适配的时候,我们需要

用到同一个方法, autoutils.autosize(convertview);我们可以实例化出来子布局,然后设置适配,那么这个子布局将
会适配auto布局。

对于listview
对于listview这类控件的item,默认根局部写“px”进行适配是无效的,因为外层非autoxxxlayout,而是listview。但

是,不用怕,一行代码就可以支持了:

@override
public view getview(int position, view convertview, viewgroup parent){
viewholder holder = null;
if (convertview == null){
holder = new viewholder();
convertview = layoutinflater.from(mcontext).inflate(r.layout.list_item, parent, false);
convertview.settag(holder);
//对于listview,注意添加这一行,即可在item上使用高度
autoutils.autosize(convertview);
} else{
holder = (viewholder) convertview.gettag();
}

回复18

0 0
2022/5/6 10:19

感谢分享

0 0
2022/5/6 10:30

三克油

0 1
2022/5/25 11:32

感谢分享

0 1
2022/5/25 11:52

感谢分享

0 0
2022/5/25 11:57

感谢分享

0 1
2022/5/25 12:20

感谢分享

0 1
2022/5/25 12:27

感谢分享

0 1
2022/5/25 12:33

感谢分享

0 0
2022/5/25 15:48

感谢分享

上划加载中
直达楼层
全部回复
正序浏览
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 4008云顶国际网站的解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

简单介绍屏幕适配(三种常用方案)-4008云顶国际网站

您已采纳当前回复为最佳回复

发帖: 4粉丝: 0

发表于2022年05月06日 09:19:56 459 18
[技术干货] 简单介绍屏幕适配(三种常用方案)

简单介绍屏幕适配(三种常用方案)

1、(px):

含义:通常所说的像素,就是ccd/cmos上光电感应元件的数量,一个感光元件经过感光,光电信号转换,a/d转换等步骤以后,在输出的照片上就形成一个点,我们如果把影像放大数倍,会发现这些连续色调其实是由许多色彩相近的小方点所组成,这些小方点就是构成影像的最小单位“像素”(pixel)。简而言之,像素就是手机屏幕的最小构成单元。

单位:px(pixel),1px = 1像素点 一般情况下ui设计师的设计图会以px作为统一的计量单位。

2、分辨率:

含义:手机在横向、纵向上的像素点数总和 一般描述成 宽*高 ,即横向像素点个数 * 纵向像素点个数(如1080 x 1920)。

单位:px(pixel),1px = 1像素点

3、屏幕尺寸(in):

含义:手机对角线的物理尺寸

单位 英寸(inch),一英寸大约2.54cm 常见的尺寸有4.7寸、5寸、5.5寸、6寸

4、屏幕像素密度(dpi):

含义:每英寸的像素点数。 例如每英寸内有160个像素点,则其像素密度为160dpi。

单位:dpi(dots per inch)

计算公式: 像素密度 = 像素 / 尺寸 (dpi = px / in)

标准屏幕像素密度(mdpi): 每英寸长度上还有160个像素点(160dpi),即称为标准屏幕像素密度(mdpi)

密度类型 代表的分辨率(px) 屏幕密度(dpi) 换算(px/dp) 比例 图片px
低密度(ldpi) 240x320 120 1dp=0.75px 3 3636
中密度(mdpi) 320x480 160 1dp=1px 4 48
48
高密度(hdpi) 480x800 240 1dp=1.5px 6 7272
超高密度(xhdpi) 720x1280 320 1dp=2px 8 96
96
超超高密度(xxhdpi) 1080x1920 480 1dp=3px 12 144*144

一.autolayout 用法 鸿洋地址 https://blog.csdn.net/qq_37237245/article/details/78134010

1、将autolayout引入

dependencies {
compile project(’:autolayout’)
}

也可以直接

dependencies {
compile ‘com.zhy:autolayout:1.4.5’
}

2、标明设计稿尺寸

在androidmanifest

3、使用时候有两种用法:

一种是让你的activity继承自autolayoutactivity.一般可以把你的基类继承autolayoutactivity

如果你觉得这种对你的activity改变太大等等,,,

那么,你可以将你的布局替换成

linearlayout -> autolinearlayout
relativelayout -> autorelativelayout
framelayout -> autoframelayout

系统原有的属性都会保留。

ps:几个注意事项

1、可以多用margin,减少嵌套,因为不需要考虑适配问题,所以,可以直接margin固定距离尺寸等等,

linearlayout的weight也不需要,直接每个布局设置相同宽度即可。

2、textview使用中发现很多问题,直接用px会出现高度不对问题。鸿洋这样解释:设计稿一般只会标识一个字体的大小

,比如你设置textsize=”20px”,实际上textview所占据的高度肯定大于20px,字的上下都会有一定的间隙,所以一定要

灵活去写字体的高度,比如对于text上下的margin可以选择尽可能小一点。或者选择别的约束条件去定位(比如上例,选

择了marginbottom)

但是更简单的处理方式是,我们的字体尺寸可以继续用sp.

3、在listview ,recycleview 或者一些布局我们无法转换为autoxxx的布局,我们想为子布局做适配的时候,我们需要

用到同一个方法, autoutils.autosize(convertview);我们可以实例化出来子布局,然后设置适配,那么这个子布局将
会适配auto布局。

对于listview
对于listview这类控件的item,默认根局部写“px”进行适配是无效的,因为外层非autoxxxlayout,而是listview。但

是,不用怕,一行代码就可以支持了:

@override
public view getview(int position, view convertview, viewgroup parent){
viewholder holder = null;
if (convertview == null){
holder = new viewholder();
convertview = layoutinflater.from(mcontext).inflate(r.layout.list_item, parent, false);
convertview.settag(holder);
//对于listview,注意添加这一行,即可在item上使用高度
autoutils.autosize(convertview);
} else{
holder = (viewholder) convertview.gettag();
}

分享文章到朋友圈

分享文章到微博
您已采纳当前回复为最佳回复

发帖: 105粉丝: 0

发表于2022年05月06日 10:19:21

感谢分享

您已采纳当前回复为最佳回复

发帖: 38粉丝: 0

发表于2022年05月06日 10:30:00

三克油

您已采纳当前回复为最佳回复

发帖: 105粉丝: 0

发表于2022年05月25日 11:32:38

感谢分享

您已采纳当前回复为最佳回复

发帖: 0粉丝: 0

发表于2022年05月25日 11:52:53

感谢分享

您已采纳当前回复为最佳回复

发帖: 0粉丝: 0

发表于2022年05月25日 11:57:29

感谢分享

您已采纳当前回复为最佳回复

发帖: 2粉丝: 1

发表于2022年05月25日 12:20:37

感谢分享

您已采纳当前回复为最佳回复

发帖: 0粉丝: 0

发表于2022年05月25日 12:27:06

感谢分享

您已采纳当前回复为最佳回复

发帖: 0粉丝: 1

发表于2022年05月25日 12:33:26

感谢分享

您已采纳当前回复为最佳回复

发帖: 59粉丝: 0

发表于2022年05月25日 15:48:25

感谢分享

您需要登录后才可以回帖 | 立即注册

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200
网站地图