Android高手秘笈之UI适配原理
目录
1.为什么要进行Drawable适配?android当中使用的长度单位都有哪些?
2.手机的分辨率、手机的尺寸、手机的密度分别指的是什么
4.android上根据不同的手机密度将android设备分为多少个显示级别?每个级别所对应的图片文件夹是什么?实际开发中需要做多套图片吗?
5. Android中view设置背景图片时查找图片资源的顺序?
6.在同一部480密度的手机上将一张600px*960px的图片放在不同的密度的文件夹下,请测试图片的分辨率和占用内存的大小?
7.drawable文件夹和mipmap文件夹的区别 ? jpg与png的区别?
8.简述android系统图片显示模式有哪几种,都有什么特点?
9.创建android虚拟机镜像(注意cpu的选择)
1.为什么要进行Drawable适配?android当中使用的长度单位都有哪些?
android碎片化导致的
- px:屏幕上的一个像素点
- dpi(dot per inch)/ppi:屏幕上每英寸的像素点数
- dp(density independent pixel)、dip:与密度无关的像素,用于表示长度
- sp(scale-independent pixels):与密度无关的像素,用于表示字号,当使用android系统默认字号,则sp与px的换算关系和dp与px的换算关系是一样的
2.手机的分辨率、手机的尺寸、手机的密度分别指的是什么
- 手机的分辨率:是指屏幕上所能显示的像素点的总个数,一般用手机横上的像素点乘以手机纵向的像素点表示
- 手机的尺寸:是指手机屏幕对角线的物理长度,一般用英寸表示
- 手机的密度:是指手机一英寸距离所包含的像素点个数
3.怎么获取设备的分辨率、屏幕密度系数、屏幕密度、x轴的密度、y轴的密度?
- DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
- float density = displayMetrics.density; //屏幕密度系数
- int densityDpi = displayMetrics.densityDpi;//屏幕密度
- int heightPixels = displayMetrics.heightPixels;//屏幕高度的像素
- int widthPixels = displayMetrics.widthPixels;//屏幕宽度的像素
- float scaledDensity = displayMetrics.scaledDensity;//字体的放大系数
- float xdpi = displayMetrics.xdpi;//宽度方向上的dpi
- float ydpi = displayMetrics.ydpi;//高度方向上的dpi
4.android上根据不同的手机密度将android设备分为多少个显示级别?每个级别所对应的图片文件夹是什么?实际开发中需要做多套图片吗?
六个显示级别分别是:
- ldpi[0-120]:240px*320px
- mdpi[120-160]:320px*480px
- hdpi[160-240]:480px*800px
- xhdpi[240-320]:720px*1280px
- xxhdpi[320-480]:1080px*1920px
- xxxdpi[480-640]:2160px*3840px
- 方案一:做上六套图片,太麻烦
- 方案二:使用高像素图片,在自动缩小时就不会失真,
但是遇到圆角图片会发虚,我们可以使用9.png,缩小而保证不变形
http://blog.csdn.net/lancees/article/details/7899738
http://romannurik.github.io/AndroidAssetStudio/nine-patches.html#&sourceDensity=320&name=example
- android:720*1280 xh
- ios:640*960
- 5以上:640*1136
5. Android中view设置背景图片时查找图片资源的顺序?
Android中view在setBackground加载图片时,通常会先去设备对应的像素密度的文件夹中去找对应的图片,如果没有找到就会去紧挨着的像素密度较高的文件夹中去找,然后再往上找,如果最高像素密度的文件夹中还没有找到该图片才会向像素密度较低的文件夹中去找。这是加载对应图片的一个查找过程。
比如一个设备的像素密度为240dpi,应用程序有
drawable
- drawable-ldpi:240 * 320 120
- drawable-mdp:320 * 480 160
- drawable-hdpi:480 * 800 240
- drawable-xhdpi:720 * 1280 320
- drawable-xxhdpi:1080 * 1920 480
- drawable-xxxhdpi:2160 * 3840 640
六个文件夹,则在一个view设置背景图片时,查找图片的顺序为drawable-hdpi—>drawable-xhdpi—>drawable-xxhdpi—>drawable-mdpi—>drawable—>drawable-ldpi
6.在同一部480密度的手机上将一张600px*960px的图片放在不同的密度的文件夹下,请测试图片的分辨率和占用内存的大小?
结论:
- 6.1 同一张图片,放在不同目录下,会生成不同大小的Bitmap。Bitmap的长度和宽度越大,占用的内存就越大
- 6.2 同一张图片,放在不同的drawable目录下(从drawable-lpdi到drawable-xxhpdi)在同一手机上占用的内存越来越小
- 6.3 图片在硬盘上占用的大小,与在内存中占用的大小完全不一样
内存占用大小计算公式:
- 图片占用内存大小 = 图片的宽度 * 图片的高度 * 4
- 图片的宽度 = 图片的实际宽度 * (手机的密度/图片对应文件夹的密度)+ 0.5;
- 图片的高度 = 图片的实际高度 * (手机的密度/图片对应文件夹的密度)+ 0.5
文件夹的密度:
120[L] 160[M] 240[H] 320[XH] 480[XXH] 640[XXXH]
7.drawable文件夹和mipmap文件夹的区别 ? jpg与png的区别?
- drawable:该文件夹一般都放的都是png、jpg、gif、.9图片、xml资源文件
- mipmap:该文件夹都放的是app图标
png是无损压缩,jpg是有损压缩,同一张图片png格式比jpg格式的要大
png格式解码速度比jpg格式解码速度快,因此显示就快
8.简述android系统图片显示模式有哪几种,都有什么特点?
- 1.Center:不缩放,大的会裁切,小的直接显
- 2.CenterCrop:大的会裁切,小的会放大
- 3.CenterInside:大的会缩小,小的直接显
- 4.fitXY:变形显示
- 5.FitCenter:小的会放大、大的会缩小,居中显(图片默认的显示模式)
- 6.FitStart:小的会放大、大的会缩小,居上显
- 7.FitEnd:小的会放大、大的会缩小,居下显
- 8.Matrix:是根据一个3x3的矩阵对其中图片进行缩放,动态的改变大小
9.创建android虚拟机镜像(注意cpu的选择)
android屏幕大小?
- VGA:480*640
- QVGA:240*320
- HVGA:320*480
- WVGA:480*800
- FWVGA:480*854
- VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素;
- HVGA:Half-size VGA,即:VGA的一半,分辨率为480×320,像三星盖世Ace S5830就是使用这分辨率;
- QVGA:Quarter VGA,即:VGA的四分之一,分辨率为320×240,一般用于小屏手机 像三星盖世Mini S5570就是使用这分辨率;
- WQVGA:Wide Quarter VGA,即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272;
- WVGA:Wide Video Graphics Array,即:扩大的VGA,分辨率为800×480像素,像三星i9000就是使用这分辨率;
- FWVGA:Full Wide VGA ,数码产品屏幕材质的一种,VGA的另一种形式,比WVGA分辨率高,别名 : Full Wide VGA, ,其分辨 率为854×480
<supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true" android:smallScreens="true"android:xlargeScreens="true" />
android:anyDensity="true"时,应用程序安装在不同密度的终端上时,程序会分别加载xxhdpi、xhdpi、hdpi、mdpi、ldpi文件夹中的资源
在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换
Android高手秘笈之UI适配原理相关推荐
- Android高手秘笈之View的绘制你应该知道的一切
目录 1. 简述android的UI系统的层级关系? 2. View绘制的整体流程? 3. MeasureSpec是什么? 4. 简述measure的测量流程? 5. 简述view的布局流程? 6. ...
- Android高手秘笈之View的挂载
目录 1.view挂载的流程? 2. LayoutInflater的用法? 3. 我们在调用setContentView方法的时候,加载的布局文件并没有设置其TitleBar为什么也显示了? 1.vi ...
- Android高手笔记-屏幕适配 UI优化
Android高手笔记-屏幕适配 & UI优化 屏幕与适配 由于Android碎片化严重,屏幕分辨率千奇百怪,而想要在各种分辨率的设备上显示基本一致的效果,适配成本越来越高: 屏幕适配究其根本 ...
- android ui秘笈,看图说话_Android_UI_设计秘笈.pdf
March 14 2011 看图说话看图说话 Android UI 设计秘笈设计秘笈 Part II Android 的官方开发者博客发了一份幻灯片 介绍了一些 Android UI 设计的小贴士 整 ...
- android 仿今日头条_Android今日头条UI适配完善版
作者:xcheng_ 链接:https://www.jianshu.com/p/41930fde7aac 前言 众所周知 android的碎片化一直困扰着开发者,我们要花很多的时间去做UI适配的工作. ...
- android 布局可大可小,UI设计教程之:ios与android ui适配(将IOS UI转换成Android经验畅谈)...
内容提要:这是UI设计系列教程之ios与android ui适配经验畅谈.文章作者介绍了自己将IOS UI转换成Android经验,包括:不要直接转换.了解单位和组件缩放格式.屏幕尺寸DP和像素的换算 ...
- android 今日头条布局,Android今日头条UI适配完善版
前言 众所周知 android的碎片化一直困扰着开发者,我们要花很多的时间去做UI适配的工作.主流的适配方案有两种 1.今日头条适配 2.smallestWidth适配.具体的实现点击上述连接查看. ...
- Android 目前最稳定和高效的UI适配方案
Android系统发布十多年以来,关于Android的UI的适配一直是开发环节中最重要的问题,但是我看到还是有很多小伙伴对Android适配方案不了解.刚好,近期准备对糗事百科Android客户端设计 ...
- Android dp方式的屏幕适配-原理(后期补充完整讲解)
Android dp方式的屏幕适配-原理 传统所说的屏幕适配,其实是针对不同屏幕的UI尺寸适配,即在编写页面时使用了具体的dp.sp值后导致的其他问题. 我之前写过一些相关的文章和工具插件,也收到了很 ...
最新文章
- java监听所有端口_(变强、变秃)Java从零开始之zookeeper安装
- 【SSM】基于注解@Controller的控制器
- Java消息中间件的概述与JMS规范
- 25 个 Java 机器学习工具和库
- Java线程的不同状态
- 消息推送生命周期_一套完整的APP推送体系方案|附思维导图
- StudyTonight 中文系列教程【翻译完成】
- element 方法返回的boolean被当成字符串了_quot;==quot;和 equals 方法有什么区别
- ipsec over gre与gre over ipsec
- bzoj千题计划164:bzoj5123: 线段树的匹配
- 常用网络通信协议结构图
- 谁是卧底 python_xpose和sxpose,谁是卧底?
- 树莓派串口的使用(pyserial库)
- Vue08---js动画与Velocity.js结合
- 电路知识--认识原理图(一)
- 蚁剑软件的配置与应用
- 电动汽车整车控制SIMULINK仿真
- DataBricks从开源到商业化踩过的坑
- java cron 每100分钟执行一次
- CHIL-SQL-快速参考