android图片分辨率
Ⅰ Android图片分辨率应该放到哪个文件夹的问
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
ldpi:240x320
mdpi:320x480
hdpi:480x800、480x854
xhdpi:至少960*720
xxhdpi:1280×720
Ⅱ Android中分辨率,DPI,DP与PX对应关系
分辨率就是手机屏幕的像素点数。一般为屏幕的“宽×高”,例如分辨率有720×1280的手机设备,表示此屏幕在宽度方向有720个像素点,在高度方向有1280个像素点。
按屏幕对角测量的实际物理尺寸。为简便起见,Android 将所有实际屏幕尺寸分组为四种通用尺寸:小、 正常、大和超大,以英寸(inch)为单位。例如有个5寸的手机设备,是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米。
就是每英寸的像素点数,数值越高当然显示越清晰,通常 与“正常”或“高”密度屏幕相比,“低”密度屏幕在给定物理区域的像素较少。
在定义 UI 布局时应使用的虚拟像素单位,用于以密度无关方式表示布局维度 或位置。
密度无关像素等于 160 dpi 屏幕上的一个物理像素,这是 系统为“中”密度屏幕假设的基线密度。在运行时,系统 根据使用中屏幕的实际密度按需要以透明方式处理 dp 单位的任何缩放 。dp 单位转换为屏幕像素很简单: px = dp * (dpi / 160)。 例如,在 240 dpi 屏幕上,1 dp 等于 1.5 物理像素。在定义应用的 UI 时应始终使用 dp 单位 ,以确保在不同密度的屏幕上正常显示 UI。
大多数情况下,确保应用中的屏幕独立性很简单,只需以适当的密度独立像素( dp 单位)或 "wrap_content" 指定所有 布局尺寸值。系统然后根据适用于当前屏幕密度的缩放比例适当地缩放位图可绘制对象,以 适当的大小显示。
如上表所示,现在我们在mdpi下设计了一个48x48的应用图标,那么在ldip下大小缩小0.75倍为36x36,在hdip下放大1.5倍为72x72,在xhdpi下放大2倍为96x96,在xxhdpi下放大3倍为144x144,在xxxhdpi下放大4倍为192x192.
android对于不同dpi设备提供了5个目录存放图片,使开发人员根据实际需要对图片适配。一般情况需要UI根据一种DPI密度、或分辨率的设备设计UI,根据不同dpi的比例出图,一般需要xhdpi、xxhdpi两套图,即2x、3x图。
计算相关公式:
px = dpValue * density + 0.5f;
dp = pxValue / density + 0.5f;
Ⅲ android如何获取相机分辨率
安卓系统在获取相机分辨率时,可以参考SDK中的API,获取相机的参数:
Camera.Parameters parameters = camera.getParameters();
获取预览的各种分辨率:
List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
获取摄像头支持的各种分辨率:
List<Size> supportedPictureSizes = parameters.getSupportedPictureSizes();
例如:获取照相机颤弯参数,设置需要的参数,其余缺省
Camera camera = Camera.open();
Camera.Parameters parameters = camera.getParameters();
设置照片格式:
parameters.setPictureFormat(PixelFormat.JPEG);
设置预浏尺嫌洞含寸,注意要在摄像头芹笑支持的范围内选择:
parameters.setPreviewSize(WIDTH, HEIGHT);
设置照片分辨率,注意要在摄像头支持的范围内选择
parameters.setPictureSize(WIDTH, HEIGHT);
设置照相机参数:
camera.setParameters(parameters);
开始拍照:
camera.startPreview();
以上就是获取相机分辨率的步骤。
Ⅳ android app界面设计规范(dpi,dp,px等)
PPI(Pixels per inch):每英寸所拥有的像素数,即像素密度。
DPI(dots per inch):即每英寸上,所能印刷的网点数,一般称为像素密度。ppi计算公式:ppi = 屏幕对角线像素数/屏幕对角线英寸数,通过勾股定理计算屏幕对角线像素数。
Screen Size(屏幕尺寸):手机屏幕尺寸大小,如3英寸、4英寸、4.3英寸、5.7英寸,指的是对角线的长度。
DIP(device independent pixel):即dip/dp,设备独立像素。 1px = 1dp density(由dpi决定)
Resolution(分辨率):指手机屏幕垂直和水平方向上的像素个数。eg分辨率480 800,指该设备垂直方向有800个像素点,水平方向有480个像素点。
px(Pixel像素):相同像素的ui,在不同分辨率的设备上效果不同。在小分辨率设备上会放大导致失真,大分辨率上被缩小。
Android Design里把主流设备的 dpi 归成了四个档次: 120 dpi、160 dpi、240 dpi、320 dpi ,具体见如下表格。
实际开发当中,我们经常需要对这几个尺寸进行相互转换(比如先在某个分辨率下完成设计,然后缩放到其他尺寸微调后输出),一般按照 dpi 之间的比例即 2:1.5:1:0.75 来给界面中的元素来进行尺寸定义。
也就是说如果以 160 dpi 作为基准的话,只要尺寸的 DP 是 4 的公倍数,XHDPI 下乘以 2,HDPI 下乘以 1.5,LDPI 下乘以 0.75 即可满足所有尺寸下都是整数 pixel 。但假设以 240 dpi 作为标准,那需要 DP 是 3 的公倍数,XHDPI 下乘以 1.333,MDPI 下乘以 0.666 ,LDPI 下除以 2。而以 LDPI 和 XHDPI 为基准就更复杂了。同时第一款Android设备(HTC的T-Mobile G1)是属于160dpi的。鉴于以上各种原因, 标准dpi=160
谷歌官方对dp的解释如下:
A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density-independent way.
The density-independent pixel is equivalent to one physical pixel on a 160 dpi screen, which is the baseline density assumed by the system for a "medium" density screen. At runtime, the system transparently handles any scaling of the dp units, as necessary, based on the actual density of the screen in use. The conversion of dp units to screen pixels is simple: px = dp * (dpi / 160). For example, on a 240 dpi screen, 1 dp equals 1.5 physical pixels. You should always use dp units when defining your application's UI, to ensure proper display of your UI on screens with different densities.
简单来说,以160dpi的设备为准,该设备上1dp = 1px;如果屏幕密度大,1dip代表的px就多,比如在320dpi的屏幕上,1dip=2px(即1dp代表2个像素)。在app开发时,最好用dp来做界面的布局,以保证适配不同屏幕密度的手机。
dp和px的换算公式:
我的理解,该公式表示px的数值等于dp的数值*(设备dpi/160)
注意,px、dp是单位,但density没单位。
applyDimension的源码如下,可参考:
android的尺寸众多,建议使用分辨率为 720x1280 的尺寸设计。这个尺寸 720x1280中显示完美,在 1080x1920 中看起来也比较清晰;切图后的图片文件大小也适中,应用的内存消耗也不会过高。
app启动图标为48*48dp,对应各dpi设备,图像资源像素如下:
| mdpi | hdpi | xhdpi | xxhdpi |
| ---:| ---: | ---:| ---:| ---:|
|48 48px|72 72px|94 96px|144px 144px|
操作栏图标为32*32dp,对应各dpi设备,图像资源像素如下:其中图形区域尺寸是24*24dp,可参考平时ui切图会有部分留白。
| mdpi | hdpi | xhdpi | xxhdpi |
| ---:| ---: | ---:| ---:| ---:|
|32 32px|48 48px|64 64px|96px 96px|
通知栏图标为24*24dp,对应各dpi设备,图标像素如下:
| mdpi | hdpi | xhdpi | xxhdpi |
| ---:| ---: | ---:| ---:| ---:|
|24 24px|36 36px|48 48px|72px 72px|
某些场景需要用到小图标,大小应当是16*16dp,其中图形区域尺寸12*12dp。
| mdpi | hdpi | xhdpi | xxhdpi |
| ---:| ---: | ---:| ---:| ---:|
|16 16px|24 24px|32 32px|48px 48px|
Ⅳ Android性能优化-大分辨率图片最佳实践
好久没更新博客了,借着908公司18周年年会这个普(期)天(待)同(红)庆(包)的日子,来说下安卓中的图片与内存的关系。
大家都知道安卓中图片是占用内存的大户,在日常开发中也免不了用到图片,那么图片占用内存与哪些因素有关呢,先直接给结论:
1)与图片分辨率有关;
2)与开发者放的文件目录有关;
3)与图片大小没有半毛钱关系。
举个例子:
以现在主流1080p手机为例,新建一个空的工程,用一张1080*1080像素图片来测试:
将图片放在xxhdpi目录下,测试内存,效果如下:
大家可以接着尝试将图片放到mhdpi目录 或者xhdpi目录下,看下内存占用情况,上面放xxhdpi从图上看大概占4M左右,那么这个值是怎么计算来的:
放xxhpi下图片内存占用 = 1080 *1080 *4 /1024 / 1024 = 4.45M
稍微解释下公式,像素长*宽*一个像素占用的字节数,安卓的色彩模式一个像素占用的字节关系如下表:
也就是说,你在布局文件里随便定义一个imageview,加载一个1080*1080的图片,显示的时候,将按一像素4byte计算内存占拆配昌用。
如果你按照上面的步骤尝试了将图片放到mdpi目录或者xhdpi目录,应该知道结论了,图片占用内存成倍数的变大了,看下放mdpi文件夹下的效果:
如果开发者将同样一张1080*1080像素图片放到mdpi目录下,图片占用内存=(1080*3)*(1080*3)*4 /1024 /1024 = 40M,比之前放xxdpi目录下内存高出了9倍,所以:图片不是乱放的,要谨慎。
现在主流手机分辨率1080p以上,建议大图统一放到xxhdpi目录下管理。
高分辨率图片常见的导致性能缺陷的场景包括:
1)放错图片目录卖基,导致占用内存成倍数增长;
2)限定了高宽的imageview组件,加载了超过该尺寸大小的图片;
3)单色值图片、loading过渡图片、对清晰度要求不高的图片等,强上了大分辨率图片。
这些场景都是在实际开发中遇到过的问题,可能出于设计师的疏忽,可能出于程序猿的随意,修复这些缺陷的成本很低,但是对内存降低的帮助是指数级的,投入产出比这么高的事情,只能说到这里了。
对应的修复手段很明确了:
1)建议图片放xxhpdi目录;
2)限定高宽的imageview,图片最大尺寸不超过该imageview最大承载高宽;
3)简单图片直接下掉,或者压缩下吧,也可以结合业务背景用背景色等替换。
如果你的项目比较小,人肉去找都可以知道哪些是大分旅扒辨率图片,那么检查下使用是否正确。如果你的项目是一个大型客户端项目,人工去找就很尴尬了,是的,我想说python大法好,来个脚本吧,无死角搞定所有大分辨率图片可能导致的性能缺陷:
Ⅵ android如何加载超大分辨率图片
因为你要求图片不能缩放,不能降低质量,而且有7M,oom是必须的,所以你能做的只能是加载你看得见的地方,意思就是说剪裁着看,先不加载,按屏幕的分辨率的1.5倍或多一些进行剪裁(这个度自己控件),当向某一个方向滑时,检测坐标如果快超出时,加载右边的下一幅。
这个有点类似于游戏中的地图贴图,也是分块的。
Ⅶ android 图片大小如何设置可以自适应不同分辨率
不知道你什么情况下要让图片自适应不通过分辨率。给你举个例子吧,希望对你有所帮助!当你把图片塞到imageView中时,布局注意
不要把值定死 比如:
android:layout_width="100dp"
android:layout_height="90dp"
直接给他
android:layout_width="fill_parent"
android:layout_height="wrap_content"
这样 ,才能适应你分辨率。
还有就是drawable_hdpi ,ldpi,mdpi分别代表不同分辨率drawable_hdpi(800*480),ldpi(480*320),mdpi(320*240),你自己放图片时注意了。
Ⅷ android图标分辨率是多少
应用程序图标 (Icon)应当是一个 Alpha 通道透明的32位 PNG 图片。
由于安卓设备众多,一个应用程序图标需要设计几种不同大小,如:
LDPI (Low Density Screen,120 DPI),其图标大小为 36 x 36 px。
MDPI (Medium Density Screen, 160 DPI),其图标大小为 48 x 48 px。
HDPI (High Density Screen, 240 DPI),其图标大小为 72 x 72 px。
xhdpi (Extra-high density screen, 320 DPI),其图标大小为 96 x 96 px。
建议在设计过程中,在四周空出几个像素点使得设计的图标与其他图标在视觉上一致,例如:
96 x 96 px 图标可以画图区域大小可以设为 88 x 88 px, 四周留出4个像素用于填充(无底色)。
72 x 72 px 图标可以画图区域大小可以设为 68 x 68 px, 四周留出2个像素用于填充(无底色)。
48 x 48 px 图标可以画图区域大小可以设为 46 x 46 px, 四周留出1个像素用于填充(无底色)。
36 x 36 px 图标可以画图区域大小可以设为 34 x 34 px, 四周留出1个像素用于填充(无底色)。