首页 > 其他分享 >Android屏幕适配小技巧swdp

Android屏幕适配小技巧swdp

时间:2023-01-05 12:06:18浏览次数:66  
标签:文件 layout 后缀 适配 dpi Android 屏幕 swdp


最近做一个项目需要适配到不同的平板和手持设备上,在屏幕适配上遇到了一些问题,查了Android官方文档了解了一些技巧的,现在总结如下:

先解释几个概念:
1、dpi(dot per inch),即每英寸像素,所有的android设备都会被分成120(low),160(medium),240(high),320(xhigh)四种,后来随着市场上android设备越来越多,google官方又增加了213(Added in API level13),480(Added in API level16),640(Added in API level18),三种dpi。比如320*240分辨率的屏幕物理尺寸2英寸*1.5英寸,dpi=160;
2、dp或dip(density-independent pixel)逻辑密度计算单位,与像素的换算方式为px=dp*(dpi/160)。

px=dp*(dpi/160)      // dp转px

dp = px * (160 / dpi)    // px转dp

3、那么dpi计算公式简化成

dpi=(√(横向分辨率^2+纵向分辨率^2))/屏幕尺寸

备注:Android下dpi其实是人为在Android/device/softwinner/astar-common/astar-y3.mk中设定的,

也可以通过 adb shell getprop ro.sf.lcd_density 获得。

adb shell getprop ro.sf.lcd_density

 

在android3.2以前,所有的资源文件都有相应的xhdpi,hdpi,mdpi,ldpi四种文件来对应,android3.2以后,为了提供更精准的对布局文件的控制,可以通过为资源文件(res目录下文件)增加后缀来指定该文件夹里的xml布局文件或color.xml,string.xml是为哪种大小的屏幕使用。
第一种后缀:sw<N>dp,如layout-sw600dp, values-sw600dp
这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
第二种后缀w<N>dp 如layout-w600dp, values-w600dp
带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw<N>dp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
第三种后缀h<N>dp 如layout-h600dp, values-h600dp
这个后缀的使用方式和w<N>dp一样,随着屏幕横纵向的变化,屏幕高度也会变化,根据变化后的高度值来判断是否使用h<N>dp ,但这种方式很少使用,因为屏幕在纵向上通常能够滚动导致长度变化,不像宽度那样基本固定,因为这个方法灵活性不是很好,google官方文档建议尽量少使用这种方式。

 

参考:

1、​​android layout布局计算公式 layout-swxxxdp计算方法​​

2、​​Android屏幕适配小技巧swdp​​

标签:文件,layout,后缀,适配,dpi,Android,屏幕,swdp
From: https://blog.51cto.com/u_15930680/5990013

相关文章

  • 在Linux下adb连接不上android手机的终极解决方案
    1、做android开发的过程,碰到了Linux下adb识别不了android设备的问题,刚开始在网上google下,发现都是针对ubuntu下的一些说明:如google提供的方法:​​http://developer.android.......
  • Android系统字体
    原理:Android手机的字体库在/system/fonts下,取得root权限以后,只要把对应的字体文件替换即可。其中DroidSansFallback.ttf为中文字体;DroidSans.ttf为英文字体。替换步骤:工具:R.......
  • Android EncodingUtils
    EncodingUtils报错CannotResolveSymbolEncodingUtils  提示是:错误:程序包org.apache.http.util不存在 错误:找不到符号  符号:变量 EncodingUtils 解决办法Enc......
  • 验证OK-AndroidStudio引用第三方so库的正确姿势
    AndroidStudio引用第三方so库的正确姿势 以项目名称app1为例:1、把so文件复制到\app1\app\libs\文件夹下,但是要注意,so文件是放在对应的平台文件夹之下(如arm64-v8a,ar......
  • vue数据大屏适配
    1、不管使用的是px,还是百分比,均可通过css3中提供的scale方法,来达到适配多端。//屏幕适配mixin函数//*默认缩放值constscale={width:'1',height:'1',......
  • 《C语言程序设计》1.5while(getchar()!=EOF)与xcode的适配问题
    最近在复习C语言,《C语言程序设计》1.5字符输入/输出部分涉及到如下代码:while(getchar()!=EOF)输入一段字符串并回车后发现无法跳出while循环。首先尝试用键盘输入EOF,......
  • Android-Intent界面跳转
    1、问题描述在登陆界面中点击一个button时,触发后台检验用户名密码的正确性,如果符合数据库那么就登陆成功,本文简单介绍该结构,不设计数据库等调用,仅为两个验证字符串。2、结果......
  • Android-创建简单登陆界面
    文章目录​​1、问题描述​​​​2、结果展示​​​​3、具体实现​​​​4、代码实现​​1、问题描述使用androidstudio或者其他开发案桌工具,创建一个简易的登陆界面。2......
  • android本地文件处理的一些经验
    选择文件后,现在一般返回UricontentResolver.getType(selUrl)结果如下.txttext/plain.jpegimage/jpeg.mp4video/mp4.mp3audio/mpeg.yml/.hprofapp......
  • 获取Android设备系统apk
    前提条件是:电脑adb连接Android设备打开命令好窗口,输入指令adbshell"dumpsyswindow|grepmCurrentFocus"输入指令adbshell"pmpath包名",获取Apk所在目录位置,如:/pr......