Android 基本常识

作者: 薛之涛 | 来源:发表于2018-04-16 22:03 被阅读418次

    这些常识性的东西呢,都是我在开发指出遇到的,以及后来在开发中个人慢慢理解,今天来做个总结,如有错误,还望指出,相互学习。

    问题一:dp,px ,sp,dip的区别

    sp:android 开发中通常表示字体大小。

    dip:设备独立像素,不同设备有不同的显示效果,与屏幕密度有关,而屏幕密度又和设备硬件有关,在某种条件下 ,比如屏幕密度为160,那么1dip = 1px。那如果你的屏幕密度不变而屏幕分辨率变大,就会出现图像变小。

    注:屏幕密度:在屏幕密度中,HVGA屏的密度为160,QVGA屏的密度为120,WVGA屏的密度为240,WQVGA屏的密度为120。其中密度值表示每英寸有多少个显示点和屏幕分辨率是两个概念。HVGA,WVGA这些都是影像画质的标准。

    dip与px的换算: dip(value)=(int) (px(value)/1.5 + 0.5)

    dp:和dip是一样的。

    px:我们通常说的手机分辨率比如小米4 是 1920 x 1080 那单位就是px,如果你把手机屏幕放大到一定程度,会看到密密麻麻的小正方形格子,竖列有1920个横列有1080个,这个单位是绝对的,不同的设备不同的显示屏显示效果是相同的.

    补充:屏幕尺寸也就是手机大小,如苹果iPhone6 Plus 配备5.5 英寸屏幕.

    当然dp和px也是有换算关系的:

    如下图,注:此图是之前查看别人的博客时截取的,已忘记出处,还望见谅。

    问题二:Drawable和Drawable-dip 和 mipmap-dpi关系与区别?

    Drawable和Drawable-dip区别?

    刚开始用eclipse开发anroid的时候只有Drawable文件和Drawable-dip文件,

    Drawable文件是用来存放.xml文件的如:背景选择器 <Select></Select>,<Shape></Shape>等文件。

    Drawable-ldpi和Drawable-mdip等是用来存放图片资源的。

    drawable-dip和mipmap-dpi区别?

    在之后转为Studio开发之后才出现了mipmap-dpi文件夹,其实mipmap文件夹和drawable文件夹一样都可以放图片资源。但习惯上,大部分程序员在开发的时候选择,在mipmap中存放应用图标,手动创建drawable-mipmap文件夹存放不同密度的照片。

     drawable-dip和mipmap-dpi没有本质区别。


    那么如何将图片正确存放到不同的drawable 和 mipmap文件夹下呢?

    ldpi: 屏幕密度为120的手机设备 

    mdpi: 屏幕密度为160的手机设备(此为baseline,其他均以此为基准,在此设备上,1dp = 1px) 

    hdpi: 屏幕密度为240的手机设备 

    xhdpi: 屏幕密度为320的手机设备 

    xxhdpi:屏幕密度为480的手机设备

    如果是320x240的切图,则应该放在drawable-ldpi目录下。

    如果是480x320的切图,则应该放在drawable-mdpi目录下。

    如果是800x480的切图,则应该放入drawable-hdpi目录下, 

    如果是1280x720的切图,则应该放在drawable-xhdpi目录下。

    如果是1920x1280的切图,则应该放在drawable-xxdpi目录下。

    android手机先根据当前分辨率选择最近的一个文件夹读取,比如你可以把1080P放在hdpi中,那么高分辨率手机先读hdpi这里面的,没有就找mdpi,依次类推。最后会去drawable文件夹找,但是图片不推荐放到drawable文件夹,否则很容易出现out of memory的错误。建议一一对应。

    小伙伴们明白了吗?

    相关文章

      网友评论

      • 洼窝:出现out of memory的原因是啥
        薛之涛:这个要具体情况分析,比如你的是加载图片过大,或者资源没有及时回收都会引起
      • liliLearn:drawable-dip和mipmap-dpi是有很大的区别的!
        官方文档描述很清楚了:
        https://developer.android.google.cn/guide/topics/resources/providing-resources.html
        适用于不同启动器图标密度的可绘制对象文件。
        mipmap 纹理映射技术 把启动图标放入mipmap文件夹,它可以根据不同分辨率进行优化。
        他们的区别在图片的清晰度和内存占用上是有很大区别的。
        liliLearn:@徒儿心静 相互学习 !
        薛之涛:@liliLearn 学习了

      本文标题:Android 基本常识

      本文链接:https://www.haomeiwen.com/subject/vffykftx.html