Android 基本常识

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


问题一: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也是有换算关系的:

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


6748497-587d60f73c0f7a6d.png

问题二:app开发中可以用一套ui图吗?

  这个问题我们可以换一种方式理解,如果ui人员给我的是1080x720分辨率的切图即xhdpi我放到xxhdip或者hdip有什么影响没?

我直接来一张网上的图说明吧:

6748497-3693016f5572c163.png

这张图是不同分辨率之间的倍数关系图,就是说如果是xhdpi的图片,我们放到了xxhdpi,系统就会把图片的宽=原图片宽*(3/4)也就是把宽在内存中放大,同样高也会放大,那么在内存占用的资源也比xhdpi中多,消耗内存。

那我如果放在drawable中呢?放到drawable的图片会按系统默认的像素密度,按drawable-mhdpi放缩比例进行放缩。

总结:

当图片放置在不同drawable文件夹中,且只有这一张图片时,运行设备会根据自身的屏幕密度,对图片进行放缩,放缩比例符合前面图上的规则

图片文件的大小与在内存中占用的大小没关系,内存中实际占用大小与图片分辨率、像素显示参数有关,

所以在一个App里面使用一套UI理论上应该是没有问题的,但最好放置在正确的drawable文件夹中。于可以使用.9格式的图片,最好使用.9,减少资源大小。

如果有条件,最好提供多套UI切图。如果只有一套切图,系统需要对图片进行压缩,会进行大量运算,影响设备性能。


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

Drawable和Drawable-dip区别?

6748497-130c1702bc8f67bc.png

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

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

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


drawable-dip和mipmap-dpi区别?

6748497-e8ec0ef54b1c6046.png

在之后转为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的错误。建议一一对应。

小伙伴们明白了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛之涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值