Android分辨率适配心得
关于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为屏幕宽度):
<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.代码控制
Android分辨率适配心得的更多相关文章
- android分辨率适配
重要概念 什么是屏幕尺寸.屏幕分辨率.屏幕像素密度? 什么是dp.dip.dpi.sp.px?他们之间的关系是什么? 什么是mdpi.hdpi.xdpi.xxdpi?如何计算和区分? 在下面的内容中我 ...
- Android中,图片分辨率适配总结规则drawable drawable-mdpi drawable-hdpi drawable-nodpi drawable-ldpi
一直关于android多分辨率适配有些疑惑,从网上找到一些资料并通过测试验证,参考链接:http://blog.csdn.net/lamp_zy/article/details/7686477 现记录 ...
- Android屏幕适配全攻略(最权威的官方适配指导)屏幕尺寸 屏幕分辨率 屏幕像素密度 dpdipdpisppx mdpihdpixdpixxdpi
Android屏幕适配全攻略(最权威的官方适配指导)原创赵凯强 发布于2015-05-19 11:34:17 阅读数 153734 收藏展开 转载请注明出处:http://blog.csdn.net/ ...
- 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)
来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android屏幕适配全攻略(最权威的官方适配指导) (转)
招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
- 腾讯优测| 让Android屏幕适配开发更简单-Google百分比布
文/腾讯优测工程师 吴宇焕 腾讯优测优社区干货精选~ 相信开发同学都被安卓设备碎片化的问题折磨过,市面上安卓手机的主流屏幕尺寸种类繁多,给适配造成很大的困难.就算搞定了屏幕尺寸问题,各种分辨率又让人眼 ...
- Android多分辨率适配
前一阶段开发android项目,由于客户要求进行多分辨率适配,能够支持国内主流的分辨率手机.因此经过了几次开发走了很多弯路,目前刚刚领略了android多分辨率适配的一些方法. 先介绍一下所走的弯路, ...
- Android多分辨率适配经验总结
Android多分辨率适配是一件很有意义但是比较麻烦的事情,网上有很多关于多分辨率适配的文章,多数文章讲解的都是整个APP的图片比较规则,可以将图片做成9图来完成多分辨率适配,但是对于一些游戏类应 ...
随机推荐
- Angular系列----AngularJS入门教程05:双向绑定(转载)
在这一步你会增加一个让用户控制手机列表显示顺序的特性.动态排序可以这样实现,添加一个新的模型属性,把它和迭代器集成起来,然后让数据绑定完成剩下的事情. 请重置工作目录: git checkout -f ...
- MySQL如何查询两个日期之间的记录
baidu出来的结果多是下面答案:<quote> MySQL中,如何查询两个日期之间的记录,日期所在字段的类型为datetime(0000-00-00 00:00:00) 解决方案: 直接 ...
- 移动端手势库Hammer.js学习
感觉移动端原生支持的 touch.tap.swipe 几个事件好像还不够用,某些时候还会用到诸如缩放.长按等其他功能. 近日学习了一个手势库 Hammer.js,它是一个轻量级的触屏设备手势库,能识别 ...
- Asp.NET MVC JSON序列化问题
最近在做项目的时候遇到一个JSON序列化问题. 环境:ASP.NET MVC 4.0 数据库:SQL 2008 在将获取的数据从后台以json的形式传给前台的easyui treegrid绑定的时候通 ...
- 关于Chrome Dev Tool
★注意点一:函数名,方法名要拼写准确;
- 新的Visual C++代码优化器
微软在 5 月 4 日发布了新的高级代码优化器,服务于 Visual C++ 的后端编译器.提高了代码性能,可以压缩代码体积,将编译器带入了一个新的境界. Visual C++ 的团队在博客上称,这将 ...
- knockoutjs+jquery.gridgroup 实现table数据加载和行合并
目标 使用ajax获取到json数据后,通过ko绑定到表格,然后通过jquery.gridgroup插件实现行合并,效果如下: 步骤 1.引入插件 <script src="~/Scr ...
- csharp:Compare two DataTables to rows in one but not the other
/// <summary> /// 账面数据 Accounting /// </summary> /// <returns></returns> Dat ...
- java.lang.NullPointerException org.apache.jsp.WEB_002dINF.pages.imagecheck.test_jsp._jspInit(test_jsp.java:22)的原因
HTTP Status 500 - type Exception report message description The server encountered an internal error ...
- Python基础(一),Day1
python的安装 python2.x与3.x的部分区别 第一个python程序 变量 字符编码 注释 格式化字符串 用户输入 常用的模块初始 if判断 循环语句 作业 1.python的安装 可以在 ...