Android适配全攻略
前言
Android的适配是Android开发中的重要一环。一个良好的适配关乎着我们的用户体验,一直Android适配就是我们Android开发者所苦恼的事,也是需要重视的一件事。下面我就整理了一下有关适配的一些知识点。
概念
px: 像素,构成图像的最小单位。
dpi: 屏幕像素密度,也就是屏幕1英寸长度上的像素点的个数,1英寸约等于2.54厘米。与屏幕尺寸和分辨率有关。具体计算公式为:
假设,屏幕尺寸:5英寸, 分辨率为 1280x720 , 那么屏幕像素密度就等于1280的平方加上720的平方的和开根再除以5,即为294dpi。
dp,dip: 密度无关像素。说明下:
在160dpi的屏幕上,1dp = 1px。 如果我们在宽160dpi的屏幕上画一条长160px(160dp)的横线,则刚好填满宽。
如果在宽240dpi的屏幕上,我们画一条160dp的横线是否能够填满呢?答案是肯定的。因为在240dpi的屏幕上,1dp=240/160px,即1dp=1.5px。那么160dp=240px。刚好填满。
所以称之为密度无关像素。
sp: 可以根据文字大小首选项进行放缩,相信看过TextView的源码的朋友都知道,里面的长度单位也是sp,因为这是google推荐的字体大小单位。另外推荐使用12sp,14sp,18sp,22sp。不要小于12sp,以免用户看不清,也不要使用奇数或是小数,在放缩时有可能造成精度丢失。
布局
我相信,大家不会再使用绝对布局吧,这个布局已经违背适配的规范,所以不要使用。那么我们就尽量使用线性布局和相对布局,在使用线性布局时,使用weight属性进行分配,关于weight,在文章后面会对其进行详解。
图片文件夹
相信不少朋友也看到我们的Android项目res目录下有以下几个文件夹
google为我们创建的意义何在,也就是让我们将不同分辨率的图片放入不同的文件夹里。每个文件夹所对应的屏幕像素密度为:
mdpi :120dpi-160dpi
hdpi :160dpi-240dpi
xdpi :240dpi-320dpi
xxdpi :320dpi-480dpi
xxxdpi :480dpi-640dpi
也就是系统会根据屏幕dpi的不同,到对应的文件夹里去使用对应的图片。我们从自动创建的应用图标也可以发现hdpi-xxxdpi文件夹里的图标大小依次为:48x48px,72x72px,96x96px,144x144px,192x192px。
也就是我们在设计图标遵循2:3:4:6:8的比例来设计就对了。
相信大家已经发现,为什么没有ldpi呢?因为ldpi这种设备已经太少了,它的屏幕像素密度太低。不过如果遇到,那么也不用担心。系统会自动将Hdpi里的缩放至1/2进行适配。
weight
weight,这个属性,我们再熟悉不过,那么它的具体计算方法是怎样的?你是否知道weightSum这个属性?
好吧,下面我们一一揭晓,让我们看看下面的代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Button
android:text="Button1"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content" /><Button
android:text="Button2"android:layout_width="0dp"android:layout_weight="2"android:layout_height="wrap_content" />
</LinearLayout>
相信大家已经知道显示结果了,我就直接贴出来:
那如果我将代码改成这种,将如何显示呢?
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><Button
android:text="Button1"android:layout_width="match_parent"android:layout_weight="1"android:layout_height="wrap_content" /><Button
android:text="Button2"android:layout_width="match_parent"android:layout_weight="2"android:layout_height="wrap_content" />
</LinearLayout>
相信有些小伙伴已经猜到了,
这里我就直接贴出公式了(以宽度为例),不明白的动动手。
weight 计算出的宽度=原有宽度+剩余空间所占百分比宽度
如果我只有一个控件,我想要它的宽度占屏幕宽度的一半,怎么办?当然我们可以通过获取屏幕宽度然后动态设置。不过,这里有个更简便的方法,那就是weightSum,看了下面的代码你就懂了。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:weightSum="2"><Button
android:text="Button"android:layout_width="0"android:layout_weight="1"android:layout_height="wrap_content" />
</LinearLayout>
深入Android适配
这里就直接贴出大神的几篇blog:
Android 屏幕适配方案
Android 百分比布局库(percent-support-lib) 解析与扩展
Android 增强版百分比布局库 为了适配而扩展
Android AutoLayout全新的适配方式 堪称适配终结者
Android适配全攻略相关推荐
- android如何适配,Android适配全攻略(学习笔记总结)
Android适配全攻略(学习笔记总结) 一.为什么要进行屏幕适配 某厂商统计如下数据 2012年,支持Android的设备共有3997种 2013年,支持Android的设备共有11868种 201 ...
- Android 屏幕适配全攻略
Android-屏幕适配全攻略 一.Android屏幕碎片化 由于 Android 系统的开发性,任何用户.开发者.OEM厂商.运营商都可以对 Android 进行定制,修改成他们想要的样子.各大厂商 ...
- Android屏幕适配全攻略
Android屏幕适配全攻略(最权威的官方适配指导) 分类: Android开发 Android UI 2015-05-21 14:33 3269人阅读 评论(6) 收藏 举报 目录(?)[+ ...
- Andriod界面设计的分辨率和尺寸适配全攻略 转载
Andriod界面设计的分辨率和尺寸适配全攻略 转载 2016年09月27日 17:45:56 第一.屏幕尺寸: 一般表示是手机的实际物理尺寸,屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.5 ...
- android studio gradle配置_Unity打包Android最全攻略(含完整流程及常见问题)
洪流学堂,让你快人几步.你好,我是你的技术探路者郑洪智,你可以叫我大智. 最近写了很多AR教程,在收到的小伙伴的求助里面,超过80%都是Android打包的问题.这篇就把你Android打包问题统统搞 ...
- Android 刘海屏适配全攻略
这里主要是介绍一下Android P中刘海屏的适配以及Android P之前的适配.为什么要分开呢?因为Android P之前官方还没提供API来进行适配,都是由各家厂商来提供适配方案的. 2.And ...
- Android屏幕适配全攻略(最权威的官方适配指导)(转),共大家分享。
Android的屏幕适配一直以来都在折磨着我们这些开发者,本篇文章以Google的官方文档为基础,全面而深入的讲解了Android屏幕适配的原因.重要概念.解决方案及最佳实践,我相信如果你能认真的学习 ...
- Android屏幕适配全攻略(最权威的官方适配指导) (转)
招聘信息: Cocos2d-X 前端主程 [新浪微博]手机客户端iOS研发工程师 20k-40k iOS 开发工程师 iOS高级开发工程师(中国排名第一的企业级移动互联网云计算公司 和创科技 红圈营销 ...
- 【收藏】Android屏幕适配全攻略(最权威的Google官方适配指导)
来源:http://blog.csdn.net/zhaokaiqiang1992 更多:Android AutoLayout全新的适配方式, 堪称适配终结者 Android的屏幕适配一直以来都在折磨着 ...
最新文章
- 【笔记】Automatic recognition of soybean leaf diseases using UAV images and deep convolutional neural ne
- getdevicecaps在哪个头文件里_一招定胜负,while (true) 和 for (;;) 到底哪个更快
- autotools入门笔记(二)——创建和使用静态库、动态库
- 实战!阿里神器 Seata 实现 TCC模式 解决分布式事务,真香!
- 离不开的微服务架构,脱不开的RPC细节(值得收藏)!!!
- 金融现金贷用户数据分析和用户画像
- java获取网页表单数据,转发与重定向,使用application统计访问次数
- Cocos Creator大厅+子游戏模式
- 连锁零售多门店收银系统源码
- simulink单位转换小迈步
- 某公司的雇员分为以下若干类: Employee:这是所有员工总的父类.属性:员工的姓名,员工的生日月份。 方法:getSalary(intmonth)
- 单个次序统计量的密度函数
- Java笔记 - 黑马程序员_04(枚举,异常,Collection,List,Set)
- Selenium元素定位神器工具谷歌浏览器插件-ChroPath介绍,安装与使用
- java文件批量下载打包成zip
- JS模拟Form表单提交
- relative会脱离文档流吗_position:absolute会使元素脱离文档流
- Nb iot php_电信NBIoT物联网平台完整测试流程整理
- C++排序算法利用EsayX实现过程可视化
- 普通大学,多年功能测试,3年进入小米,软件测试如何有效的学习?