>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19030 个阅读者 刷新本主题
 * 贴子主题:  Android多屏幕适配 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-05-15 11:18:55     消息  查看  搜索  好友  邮件  复制  引用

   问题:

         测试时,发现应用在不同的显示器上显示效果不同(部分文本不能显示完全),自然想到屏幕适配的问题。

         按照思路整理如下:

         (一) 几个概念

         1, <i>Screen size </i>屏幕的尺寸,即对角线长度(单位inch-英寸)

         2, Screen density屏幕密度,即单位长度像素点数(pots/inches)

         3, Resolution 分辨率,即屏幕的总像素点数(width * height)

         4, Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个pixel,计算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp对应 的像素点越多。

          (二) 屏幕的分类(size & density)

         1, 以总像素数分,文本的size等都要改,如下图所示

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小
             每一个分类都有其最小分辨率,如下,可根据分辨率划分种类:

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

          2, 以屏幕密度分,提供不同的图片如下图所示

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

         Note1:匹配以上面两种为参考。

         Note2:还有专为水平(landscape)和竖直(portrait)两种,使用的少,在此不赘述。

          (三) Android寻找最佳资源原理

         1, 排除与设备设置不符合的资源

         2, 根据限定词(qualifier)的优先级,按照顺序查找

         3, 在限定词下,是否存在资源路径

         4, 排除不包含在限定词中的资源路径

         5,  继续执行不同的限定词查找,直到找到相应的资源

         如下图所示:

        点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

         (四) 项目步骤:

         1, manufest中配置
  1.    < supports-screens  
  2.           android:anyDensity = "true"  
  3.           android:largeScreens = "true"  
  4.           android:normalScreens = "true"  
  5.           android:smallScreens = "true"  
  6.           android:xlargeScreens = "true"   />  

     2, 新建对应的资源文件夹

         A, Layout

         例如,我现在有三个显示器分辨率:

         分别为1280*720,1024*768,1200*690

         根据以上最低分辨率的要求,分为xlarge和large两类,新建两个文件夹,如下:

         如下图所示:

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

         B, Drawable

         如下图所示:

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

          在drawable中,以mdpi为标准(即160dpi)。比例保持为3:4:5:6,如下图所示:

         点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小

                  

----------------------------
原文链接:https://blog.51cto.com/mikewang/865304

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 sunweiqin 在 2020-05-20 11:23:59 重新编辑]
  Java面向对象编程-->Java语言中的修饰符
  JavaWeb开发-->Web运作原理(Ⅲ)
  JSP与Hibernate开发-->映射一对多关联关系
  Java网络编程-->用Spring整合CXF发布Web服务
  精通Spring-->虚拟DOM和render()函数
  Vue3开发-->计算属性和数据监听
  Android 控件布局实现卡片效果,阴影效果
  Android自动化测试之Robotium学习
  Android SDCard UnMounted 流程分析
  Android在SDcard建文件夹(在Android中移动文件必用)
  Android API 中Toast类的用法
  Android学习建议
  Html5调用手机摄像头并实现人脸识别
  android使用工具性能优化
  Android 自定义View实现圆形进度条 深入理解onDraw和onMeasu...
  android 系统自带的卡帧警告
  程序员笔记|JSBridge框架解决通信问题实现移动端跨平台开发
  Matrix源码分析
  uniapp安卓ios百度人脸识别、活体检测、人脸采集APP原生插件
  MotionLayout 运动布局入门
  Android中竖着的Tablayout的简单使用
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。