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

   问题:

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

         按照思路整理如下:

         (一) 几个概念

         1, Screen size 屏幕的尺寸,即对角线长度(单位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



[这个贴子最后由 flybird 在 2020-04-08 09:30:06 重新编辑]
  Java面向对象编程-->流程控制
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->Spring、JPA与Hibernate的整合
  Java网络编程-->Socket用法详解
  精通Spring-->绑定表单
  Vue3开发-->创建综合购物网站应用
  Android 如何监听自身应用被卸载
  通过Https访问的Not trusted Server Certificate的问题的解决...
  Android JSON网络数据交换
  Android 安装实战
  Android开发实践:用脚本编译Android工程
  Android Adapter使用范例
  Android忽略HTTPS安全验证的解决
  Android JSON网络数据交换
  Android Broadcast receiver 编程-Mobile and Linux Develop...
  Roboletric+Retrofit2单元测试
  Html5调用手机摄像头并实现人脸识别
  Android 加载大图/多图,有效避免OOM
  下拉框+Switch开关控件
  Android 代码混淆技术
  Android 之不要滥用 SharedPreferences(下)
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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