1,三级缓存
why?
站在用户的角度为用户考虑提高用户的体验度,当内存中有图片之后就不再网络中进行下载,节省了图片展示的时间和流量的耗费。
要了解这个原理手心需要知道连个概念是强引用和若引用的概念
基本的概念:
强引用:
若引用:
存储的步骤: 内存---sd卡--网络下载
再开启异步任务下载的时候,如果放入内存不成功,那么则开启网络进行下载,如果网络下载不成功,则使用的是再sd卡中进行下载和使用。
2,二级采样
首先在optiions中获取相应的inJsutBounds宽高边距的方法折true 存储的是空的Bitmap
之后在compress()。中再将 inJustBounds宽高边距的方法设置为false,之后对其进行压缩存储
3.屏幕适配
why?
手机版本,系统,屏幕碎片化严重,为了不影响app在各个平台上展示正常,所以要进行屏幕的适配
2,重要概念
屏幕尺寸:英寸为单位,屏幕对角线 的距离。1英寸=2.45cm。
屏幕密度: 每英寸对角线上像素点的密度 一般在440-460左右
计算eg 10
屏幕分辨率: 横纵方向像素点的数量 px,以160独立像素密度 1px=1
横竖屏之间的切换
res--》layout-land横屏
/layout-port-竖屏
layout-large大屏
layout-small 小屏
layout-large-land 大屏且横屏在andorid5.1以上
----将activity_main之后
layout-sw<**>dp 屏幕最小宽度的限定,手机屏幕宽度最小是600dp
2,图片
mipmap-**中是用来放置图片的(只需要做一套就可以 了,主流机型 720*1280 )
mdpi 120dpi-160dpi 比例 1
hdpi 160dpi-240dpi 1.5
xhdpi 240dpi-320dpi 2
xxhdpi 320dpi-480dpi 3
xxxhdpi 480dpi-640dpi 4
桌面图标的做法和使用:(每个尺寸都需要做,之后放入不同的包中)
mdpi 48*48 比例 1
hdpi 72*72 1.5
xhdpi 96*96 2
xxhdpi 144*144 3
xxxhdpi 196*196 4
3,布局中使用 wrap_content 和match_parent不自己设定固定具体的dp尺寸()
使用线性不仅仅和相对布局,不使用绝对布局,如果使用尺寸的话,使用dimens(res---》values-800*480(相应的手机尺寸)-----》建dimens)
设置dimens的时候每个dimens都得设置属性,否则的话不会显示。(在不同的手机中会找到不同的dimens进行适配)
使用.9png图片: 左上拉伸,右下是内容,交接的地方是显示图片的内容区(上边点点,说明左右拉伸,左边点上下拉伸,底边和和右侧交叉区域是内容的显示区域)
.9png图片的使用:为了保证图标不变样,只拉伸存颜色区域的图片
在 studio中的使用.9png需要放在drawable中进行存储,之后再进行使用四个边的点都需要点
在逻辑代码中设置(最终的方法)
获取屏幕的宽高: 控件是占屏幕宽高的比例是多少 mWidth*1/2(控件的宽)
百分比的布局
自己如何做百分比适配:
布局最外层,使用的是线性布局,有方向和权重,线性布局利用权重来分配大小,将其分为各个不同的模块
线性布局嵌套三层,将其进行嵌套的时候做出来的效果是相同的,之后在微调细节布局。