内容摘自网文及书籍,只为自学提供一些知识点备忘。
1——Layout属性值
View的layout_width及layout_height有两种设定方式:一种是直接输入数值,例如:10px;另一种设定常量值,包括:fill_parent、match_parent、wrap_content三个值。
fill_parent、match_parent意义相同,表明此view的宽高值等同于父控件view的宽高值相同。wrap_content按照包裹自身内容的方式进行确定。
2——单位换算
Android开发中的常用尺寸单位有如下几种:
- dp (dip)
- px
- pt
- inch
- sp
- dp (dip): 即设备无关像素(device independent pixels),这种尺寸单位在不同设备上的物理大小相同。
- px:即像素(pixel),这个不用多说。
- pt:通常用来作为字体的尺寸单位,1 pt相当于1/72英寸。
- inch:英寸,1 英寸约等于2.54厘米,主要用来描述手机屏幕的大小。
- sp:大部分人只知道它通常用作字体的尺寸单位,实际大小还与具体设备上的用户设定有关。
尺寸单位详解之dp
dp的全称是device independent pixels,在具有不同屏幕密度的设备上,1 dp的物理大小是相同的。那么,什么是屏幕密度呢?
屏幕密度
手机的屏幕密度通常指的是手机屏幕的dpi(dots per inch),也就是每英寸的像素数。对于Android手机来说,常见的dpi有如下几种:
- ldpi:对应的dpi范围为0 ~ 120,也就是说每英寸有0到120个像素点的屏幕的屏幕密度都属于ldpi
- mdpi:dpi范围为120 ~ 160
- hdpi:dpi范围为160 ~ 240
- xhdpi:dpi范围为240~320
- xxhdpi:dpi范围为320~480
在实际开发中,通常以dpi值120、160、240、320、480分别指代ldpi、mdpi、hdpi、xhdpi、xxhdpi。通常屏幕密度越大的手机显示的图像会越细腻。可以通过如下代码获取当前Android设备的屏幕密度:
private void getDpi() {
DisplayMetrics dm = getResources().getDisplayMetrics();
Log.i("TAG", "density = " + dm.density);
Log.i("TAG", "densityDpi = " + dm.densityDpi);
}
若我们在一台屏幕密度为320dpi的Android手机上运行以上代码,会得到如下输出:
density = 2
densityDpi = 320
上面输出中的densityDpi就是Android手机屏幕的dpi值,那么density是什么呢?实际上它代表的是当前屏幕的dpi值与基准dpi值的比值,这个基准dpi值为160。
现在我们已经理解了dpi,接下来让我们揭开dp的神秘面纱。
3——mipmap和drawable区别
在使用哪一个文件夹来存放图片,一直都很有争议:
android 在 API level 17 加入了 mipmap 技术,对 bitmap 图片的渲染支持 mipmap 技术,来提高渲染的速度和质量。
mipmap 是一种很早就有的技术了(纹理映射技术),android 中的 mipmap 技术主要为了应对图片大小缩放的处理,在android 中我们提供一个 bitmap 图片,由于应用的需要(比如缩放动画),可能对这个 bitmap 进行各种比例的缩小,为了提高缩小的速度和图片的质量,android 通过 mipmap 技术提前对按缩小层级生成图片预先存储在内存中,这样就提高了图片渲染的速度和质量。在API中通过 Bitmap 的 public final void setHasMipMap (boolean hasMipMap) 方法可以让系统渲染器尝试开启 Bitmap 的 mipmap 技术。但是这个方法只能建议系统开启这个功能,至于是否正真开启,还是由系统决定。
res 目录下面 mipmap 和 drawable 的区别也就是上面这个设置是否开启的区别。
mipmap 目录下的图片默认 setHasMipMap 为 true,drawable 默认 setHasMipMap 为 false。
google 建议大家只把 app 的启动图标放在 mipmap 目录中,其他图片资源仍然放在 drawable 下面。
4——存储位置【外部存储】
/sdcard=/storage/emulated/0=/mnt/sdcard。/storage/emulated/[X]代表着多用户,0—为默认用户,>=1—为手机上其它用户。
5——存储位置【外置SD卡】
6——代码折叠
折叠单个方法:"ctrl" + "-"。 展开单个方法:"ctrl" + "+"。
折叠全部方法:"ctrl" + "shift" + "-"。 展开全部方法:"ctrl" + "shift" + "+"
7——gradle同步太慢
repositories {
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}