>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 24598 个阅读者 刷新本主题
 * 贴子主题:  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面向对象编程-->数组
  JavaWeb开发-->自定义JSP标签(Ⅱ)
  JSP与Hibernate开发-->立即检索和延迟检索策略
  Java网络编程-->对象的序列化与反序列化
  精通Spring-->
  Vue3开发-->Vue指令
  Android Gallery实现循环显示图像
  Android Broadcast receiver 编程
  android异步更新UI
  Android内核开发:图解Android系统的启动过程
  Android--Widget开发
  Android Service的用法
  Android制作Tabs界面的常用方法
  Android开发: 文件读写
  众多Android 开源项目推荐
  Android中的Intent Filter与安全
  Android学习建议
  总是听到有人说AndroidX,到底什么是AndroidX?
  android使用工具性能优化
  Android中使用Activity管理类
  RecyclerView顶部阴影透明度渐变效果
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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