关于Android分辨率适配,这个是Android开发很头疼的一个问题,也需要花费相当一部分开发时间处理的一个问题,往往一个界面怎么适配就得想半天,特别是新手,也经常有人问我是怎么适配分辨率的,我也不能几句话说清楚,自己也在研究中。

  其实,我觉得分辨率适配,不只是研发单方面的事情,与产品、UI设计师也有很大关联。首先产品必须了解一点Android布局以及分辨率适配的知识,设计的界面布局可以尽量简洁一点,效果图界面显示效果尽量稀疏一点,考虑到各个尺寸的手机每个界面的显示情况。其次,UI设计师设计时,也最好先定义一些级别的尺寸,例如一个应用的所有文字大小只有6个级别,所有界面的设计都尽量在这6个级别中选取,不要每个界面文字都不同,这样终端如果在配置文件里配置文字大小,就只需要6个配置了,另外,按钮背景等的切图,能不使用颜色渐变就不使用颜色渐变,这样终端可以使用.9.png的图片,既减小apk的尺寸,又节约应用内存。

  分辨率适配必须了解的知识:

  Supporting Multiple Screens :http://wiki.eoeandroid.com/Supporting_Multiple_Screens

  Providing Resources :http://wiki.eoeandroid.com/Providing_Resources

  

  我觉得分辨率适配的主要的几种方式:

  1、通过配置文件适配分辨率:

  控件尺寸,我觉得可以以屏幕宽度作为参考,一般手机屏幕比例差不多是320*480,如果一个控件的高度大约是屏幕总高度的0.1,就就差不多是宽度的0.1*1.5倍。

  例如,文字大小,可以以屏幕宽度做参考,定义几个级别的大小(sw为屏幕宽度):

  textsize1 = 23    (0.036*sw,列表3级)
  textsize2 = 32    (0.050*sw,列表2级)
  textsize3 = 37    (0.058*sw,列表1级)
  textsize4 = 45    (0.070*sw,标题)
  textsize5 = 56    (0.088*sw,特大)
  然后应用中尽量使用这几个文字大小。
  
  配置文件,可以定义以下几个配置文件:
  values-small(可以当做sw300计算)
  values-normal(可以当做sw320计算)
  values-large(可以当做sw480计算)
  values-xlarge(可以当做sw720计算)
  values-sw300dp(sw=300dp,以下相同)
  values-sw320dp
  values-sw340dp
  values-sw360dp
  values-sw400dp
  values-sw480dp
  values-sw520dp
  values-sw600dp
  values-sw720dp
  前4个是兼容api13以前的手机,api13以后就支持sw属性了,sw320dp附近的大小间隔可以精细点,因为大多数屏幕宽度都是320dp-360dp范围内,基本按照这个配置读取到的屏幕宽度和实际屏幕宽度相差很小了。
  定义这些比例,以及计算所有文件夹得配置大小,需要比较多的时间,但是只要配置完了,以后开发分辨率适配就会快速容易很多了。
 
  参考配置:

    <dimen name="screen_h_0_02">9.6dp</dimen>
<dimen name="screen_h_0_04">19.2dp</dimen>
<dimen name="screen_h_0_06">28.8dp</dimen>
<dimen name="screen_h_0_08">38.4dp</dimen>
<dimen name="screen_h_0_1">48dp</dimen> <!-- sw*0.15 -->
<dimen name="screen_h_0_2">96dp</dimen>
<dimen name="screen_h_0_3">144dp</dimen>
<dimen name="screen_h_0_4">192dp</dimen>
<dimen name="screen_h_0_5">240dp</dimen>
<dimen name="screen_h_0_6">288dp</dimen>
<dimen name="screen_h_0_7">336dp</dimen>
<dimen name="screen_h_0_8">384dp</dimen> <dimen name="screen_w_0_1">32dp</dimen>
<dimen name="screen_w_0_2">64dp</dimen>
<dimen name="screen_w_0_3">96dp</dimen>
<dimen name="screen_w_0_4">128dp</dimen>
<dimen name="screen_w_0_5">160dp</dimen>
<dimen name="screen_w_0_6">162dp</dimen>
<dimen name="screen_w_0_7">224dp</dimen>
<dimen name="screen_w_0_8">256dp</dimen>
<dimen name="screen_w_0_9">288dp</dimen>
<dimen name="screen_w">320dp</dimen>    <!-- 文字 -->
<!-- 0.030*sw,列表3级 -->
<dimen name="com_textsize_small">9.6dp</dimen>
<!-- 0.042*sw,列表2级 -->
<dimen name="com_textsize_medium_small">13.4dp</dimen>
<!-- 0.049*sw,列表1级 -->
<dimen name="com_textsize_medium">15.7dp</dimen>
<!-- 0.059*sw,标题 -->
<dimen name="com_textsize_medium_large">18.9dp</dimen>
<!-- 0.074*sw,特大 -->
<dimen name="com_textsize_large">23.7dp</dimen> <!-- 按钮 -->
<!-- 0.081*sw,纯文字 -->
<dimen name="com_btn_h_medium_small">26dp</dimen>
<!-- 0.100*sw,短按钮 -->
<dimen name="com_btn_h_medium">32dp</dimen>
<!-- 0.125*sw,长按钮 -->
<dimen name="com_btn_h_medium_large">40dp</dimen>
<!-- 0.144*sw,特大 -->
<dimen name="com_btn_h_large">46dp</dimen>    <!-- 间距 -->
<!-- 0.025*sw -->
<dimen name="com_padding_small">8dp</dimen>
<!-- 0.031*sw,activity padding -->
<dimen name="com_padding_medium_small">10dp</dimen>
<!-- 0.050*sw,上边距 -->
<dimen name="com_padding_medium">16dp</dimen>
<!-- 0.069*sw,模块间距 -->
<dimen name="com_padding_medium_large">22.1dp</dimen>
<!-- 0.094*sw,特大 -->
<dimen name="com_padding_large">30.1dp</dimen>   ......

  2.代码控制

  级根据控件实际可申请到的空间大小,以及内容多少,进行代码控制大小。
  例如一个文字自适应的开源控件:https://github.com/grantland/android-autofittextview
  
  先分享这么多,以后发现有更好的适配方式,再分享。
  如果大家有更好的适配方法,欢迎讨论指教。
 

Android分辨率适配心得的更多相关文章

  1. android分辨率适配

    重要概念 什么是屏幕尺寸.屏幕分辨率.屏幕像素密度? 什么是dp.dip.dpi.sp.px?他们之间的关系是什么? 什么是mdpi.hdpi.xdpi.xxdpi?如何计算和区分? 在下面的内容中我 ...

  2. Android中,图片分辨率适配总结规则drawable drawable-mdpi drawable-hdpi drawable-nodpi drawable-ldpi

    一直关于android多分辨率适配有些疑惑,从网上找到一些资料并通过测试验证,参考链接:http://blog.csdn.net/lamp_zy/article/details/7686477 现记录 ...

  3. Android屏幕适配全攻略(最权威的官方适配指导)屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi

    Android屏幕适配全攻略(最权威的官方适配指导)原创赵凯强 发布于2015-05-19 11:34:17 阅读数 153734 收藏展开 转载请注明出处:http://blog.csdn.net/ ...

  4. 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)

    来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...

  5. Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。

    Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...

  6. Android屏幕适配全攻略(最权威的官方适配指导) (转)

    招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...

  7. 腾讯优测| 让Android屏幕适配开发更简单-Google百分比布

    文/腾讯优测工程师 吴宇焕 腾讯优测优社区干货精选~ 相信开发同学都被安卓设备碎片化的问题折磨过,市面上安卓手机的主流屏幕尺寸种类繁多,给适配造成很大的困难.就算搞定了屏幕尺寸问题,各种分辨率又让人眼 ...

  8. Android多分辨率适配

    前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...

  9. Android多分辨率适配经验总结

      Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...

随机推荐

  1. App.js – 用于移动 Web App 开发的 JS 界面库

    App.js 是一个轻量级的 JavaScript UI 库,用于创建像本地应用程序的移动 Web 应用而不牺牲性能和体验.它是跨平台的,特定的UI设计,配置类似原生的过渡效果.App.js 的目的是 ...

  2. Xcode-显示代码行数

    在Xcode菜单中选择Preferences命令,单击Text Editing选项图标,选中Linenumbers复选框.(快捷键苹果键+逗号打开preferences --> Text Edi ...

  3. OpenGL开发环境配置-Windows/MinGW/Clion/CMake

    因为某些原因,不想用过于臃肿的VS了,转而使用常用的jetbrains的CLion,Clion沿袭了jetbrans的优良传统,基本代码提示功能还是比较好的,不过就是对于windows不熟悉cmake ...

  4. 分享几个cocos2dx的小游戏

    先上几个自己写的,因为最近要用cocos2dx,所以就边学边开发几个小游戏玩玩,有捕鱼,连连看,还有打地鼠!都不算完整的项目,不过拿来学习还是可以的,或者在基础上再二次开发,扩展自己! 1:捕鱼的 先 ...

  5. SerializationUtility

    public static T LoadFromXml<T>(string fileName) { FileStream fs = null; try { XmlSerializer se ...

  6. “康园圈--互联网+校园平台“项目之Sprint3

    sprint3任务列表 1.部署项目内测版上线,并绑定相应域名. 2.添加测试用的模拟数据. 3.写已实现功能及效果汇报文档. 4.写项目总结博客. 5.记录并分析用户反馈. 看板动态 第一次 第二次 ...

  7. Scrum4.0+5.0 数独游戏

    1.题目: 1.准备看板. 形式参考图4. 2.任务认领,并把认领人标注在看板上的任务标签上. 先由个人主动领任务,PM根据具体情况进行任务的平衡. 然后每个人都着手实现自己的任务. 3.为了团队合作 ...

  8. 2015年百度之星初赛(1) --- F 矩形面积

    矩形面积 Problem Description 小度熊有一个桌面,小度熊剪了很多矩形放在桌面上,小度熊想知道能把这些矩形包围起来的面积最小的矩形的面积是多少.   Input 第一行一个正整数 T, ...

  9. H5案例学习笔记

    ★基础篇     增加主体结构元素    

  10. 【循序渐进学Python】3. Python中的序列——字符串

    字符串是零个或多个的字符所组成的序列,字符串是Python内建的6种序列之一,在Python中字符串是不可变的. 1. 格式化字符串 字符串格式化使用字符串格式化操作符即百分号%来实现.在%左侧放置一 ...