1.drawable-(hdpi,mdpi,ldpi)的区别
dpi是“dot per inch”的缩写,每英寸像素数。
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

2.WVGA,HVGA,QVGA的区别
VGA是”Video Graphics Array”,显示标准为640*480。
WVGA(Wide VGA)分辨率为480*800
HVGA(Half VGA)即VGA的一半分辨率为320*480
QVGA(Quarter VGA)即VGA非四分之一分辨率为240*320

3.drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的联系
hdpi里面主要放高分辨率的图片,如WVGA (480×800),FWVGA (480×854)
mdpi里面主要放中等分辨率的图片,如HVGA (320×480)
ldpi里面主要放低分辨率的图片,如QVGA (240×320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片

4.如何设置图片

先为主流的中精度屏幕(HVGA)设计一套icon,确定图片的像素尺寸。为高精度屏幕将图片放大到150%,为低精度屏幕缩小至75%

将这三套资源放置到程序的三个文件夹下: res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-ldpi/。程序在运行时,平台会根据屏幕的精度调去合适的icon。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

android适配各种分辨率的问题

作者:selfimpr发布于 07月17日 20:03访问(83)评论(0)

Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸;分辨率也千奇百怪,800×480,960×540等;android版本的碎片化问题更是萦绕于心,不过在设计应用时可以分为两大块:3.0之前的版本和3.0之后的版本。这种情况会带来什么问题我们用三个假设来说明一下。

  1. 假设你的手上有两个4英寸的设备,设备A的分辨率是800×480,设备B的分辨率是1600×960。你在设备A上设计了一个64×64像素的图标,感觉它大小正合适,但放到设备B上的时候,这个图标看上去就只有之前一半大小了。
  2. 假设你手上的两个设备,设备A是4英寸,设备B是10英寸。在设备A上方放了一个tab控件,有三个页签。放到设备B上看时tab控件的三个页签被拉得很长,本来放6个页签的空间只放了三个页签。
  3. 假设你手上的两个设备,设备A装的是Android2.3,设备B装的是Android4.0,而设备B没有menu建,风格也不一样。你发现两个设备上用同一套风格的皮肤并不合适。

Google提供了一套体系去解决这些问题。我们再回到上面的那张图,drawable文件夹有ldpi、mdpi、hdpi、xhdpi四种。dpi指像素/英寸,而ldpi指120,mdpi指160,hdpi指240,xhdpi指320。小米手机是4英寸、854×480的分辨率,那么小米手机的dpi就是854的平方加480的平方和开2次方后除以4,结果大约是245。如果应用安装在小米手机上,那么系统会调用图中drawable-hdpi里面的资源。这样,你只要做4套资源分别放在drawable-ldpi、drawable-mdpi、drawable-hdpi以及drawable-xdpi下(图标可以按照3:4:6:8的比例制作图片资源),那么就可以解决上面假设1当中提到的问题。

对于相同dpi、但尺寸不一样的设备,可以通过layout文件控制各种资源的布局。Google将设备分为small(2~3英寸)、normal(4英寸左右)、large(5~7英寸)、xlarge(7英寸以上)。在上面的假设2种,我们可以在layout-normal里配置3个页签的tab栏,在layout-xlarge里配置6个页签的tab栏。如果应用在所有设备上布局都一样,那么就不用考虑针对不同尺寸的layout。从图中那些layout*文件夹可以看出,该应用在hdpi及xhdpi上支持横竖屏,而且横竖屏的布局不一致,但没有考虑不同尺寸的设备使用不同布局的情况。

Android3.0之前的风格与Android3.0(包含3.0)之后的风格区别很大,图中那个应用就使用了两种风格的资源及布局。Android2.3的小米会使用drawable-hdpi及layout-hdpi当中的文件,而Android4.0的小米就会使用drawable-hdpi-v11及layout-hdpi-v11里面的文件。

//-------------------------------------------------------------------------------------------------------------------------------------------------------------
一:不同的layout

Android手机屏幕大小不一,有480x320, 640x360, 800x480.怎样才能让App自动适应不同的屏幕呢?
其实很简单,只需要在res目录下创建不同的layout文件夹,比如layout-640x360,layout-800x480,所有的layout文件在编译之后都会写入R.Java里,而系统会根据屏幕的大小自己选择合适的layout进行使用。

二:hdpi、mdpi、ldpi

在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。

  drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:

  (1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)

  (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)

  (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)

  系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

更正:应该是对应不同density 的图片

  在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

[i]备注:三者的解析度不一样,就像你把电脑的分辨率调低,图片会变大一样,反之分辨率高,图片缩小。 [/i]
屏幕方向:

横屏竖屏自动切换:

1

 可以在res目录下建立layout-port-800x600和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,这样在手机屏幕方向变化的时候系统会自动调用相应的布局文件,避免一种布局文件无法满足两种屏幕显示的问题。

不同分辨率横屏竖屏自动切换:

以800x600为例
可以在res目录下建立layout-port-800x600和layout-land-800x600两个目录

不切换:

以下步骤是网上流传的,不过我自己之前是通过图形化界面实现这个配置,算是殊途同归,有空我会把图片贴上来。

还要说明一点:每个activity都有这个属性screenOrientation,每个activity都需要设置,可以设置为竖屏(portrait),也可以设置为无重力感应(nosensor)。

要让程序界面保持一个方向,不随手机方向转动而变化的处理办法:

在AndroidManifest.xml里面配置一下就可以了。加入这一行android:screenOrientation="landscape"。
例如(landscape是横向,portrait是纵向):

Java代码:

<?xml version="1.0" encoding="utf-8"?>

另外,android中每次屏幕的切换动会重启Activity,所以应该在Activity销毁前保存当前活动的状态,在Activity再次Create的时候载入配置,那样,进行中的游戏就不会自动重启了!

有的程序适合从竖屏切换到横屏,或者反过来,这个时候怎么办呢?可以在配置Activity的地方进行如下的配置android:screenOrientation="portrait"。这样就可以保证是竖屏总是竖屏了,或者landscape横向。

而有的程序是适合横竖屏切换的。如何处理呢?首先要在配置Activity的时候进行如下的配置:android:configChanges="keyboardHidden|orientation",另外需要重写Activity的 onConfigurationChanged方法。实现方式如下,不需要做太多的内容:

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
// land do nothing is ok
} else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
// port do nothing is ok
}
}

写一个支持多分辨的程序,基于1.6开发的,建立了三个资源文件夹drawable-hdpi drawable-mdpi drawable-ldpi,里面分别存放72*72 48*48 36*36的icon图标文件。当我在G1(1.5的系统)上测试时,图标应该自适应为48*48才对啊,但实际显示的是36*36。怎么才能让其自适应 48*48的icon图标呢

解决办法 drawable-hdpi drawable-mdpi drawable-ldpi改成drawable-480X320 drawable-800X480的多分辨支持的文件夹

对于Android游戏开发我们不得不像iPhone那样思考兼容 Android平板电脑,对于苹果要考虑iPad、iPhone 3GS和iPhone 4等屏幕之间的兼容性,对于几乎所有的分辨率总结了大约超过20中粉笔阿女郎的大小和对应关系,对于开发Android游戏而言可以考虑到未来的3.0以及很多平板电脑的需要。

常规的我们可能只考虑QVGA,HVGA,WVGA,FWVGA和DVGA,但是抛去了手机不谈,可能平板使用类似WSVGA的1024×576以及WXGA的1280×768等等。
QVGA = 320 * 240;
WQVGA = 320 * 480;
WQVGA2 = 400 * 240;
WQVGA3 = 432 * 240;
HVGA = 480 * 320;
VGA = 640 * 480;
WVGA = 800 * 480;
WVGA2 = 768 * 480;
FWVGA = 854 * 480;
DVGA = 960 * 640;
PAL = 576 * 520;
NTSC = 486 * 440;
SVGA = 800 * 600;
WSVGA [...]

这是一个比较有代表性的Android软件资源包,drawable里面存放的是应用的图标文件,layout存放的是布局,简单说就是这些图标如何摆放。为什么Android上需要这么多资源包文件和布局文件是我们接下来需要讨论的问题。

Android设备屏幕的尺寸是各式各样的,如小米是4英寸的,Xoom平板是10英寸;分辨率也千奇百怪,800×480,960×540等;Android版本的碎片化问题更是萦绕于心,不过在设计应用时可以分为两大块:3.0之前的版本和3.0之后的版本。这种情况会带来什么问题我们用三个假设来说明一下。

  1. 假设你的手上有两个4英寸的设备,设备A的分辨率是800×480,设备B的分辨率是1600×960。你在设备A上设计了一个64×64像素的图标,感觉它大小正合适,但放到设备B上的时候,这个图标看上去就只有之前一半大小了。

  2. 假设你手上的两个设备,设备A是4英寸,设备B是10英寸。在设备A上方放了一个tab控件,有三个页签。放到设备B上看时tab控件的三个页签被拉得很长,本来放6个页签的空间只放了三个页签。

  3. 假设你手上的两个设备,设备A装的是Android2.3,设备B装的是Android4.0,而设备B没有menu建,风格也不一样。你发现两个设备上用同一套风格的皮肤并不合适。

Google提供了一套体系去解决这些问题。我们再回到上面的那张图,drawable文件夹有ldpi、mdpi、hdpi、xhdpi四种。dpi指像素/英寸,而ldpi指120,mdpi指160,hdpi指240,xhdpi指320。小米手机是4英寸、854×480的分辨率,那么小米手机的dpi就是854的平方加480的平方和开2次方后除以4,结果大约是245。如果应用安装在小米手机上,那么系统会调用图中drawable-hdpi里面的资源。这样,你只要做4套资源分别放在drawable-ldpi、drawable-mdpi、drawable-hdpi以及drawable-xdpi下(图标可以按照3:4:6:8的比例制作图片资源),那么就可以解决上面假设1当中提到的问题。

对于相同dpi、但尺寸不一样的设备,可以通过layout文件控制各种资源的布局。Google将设备分为small(2~3英寸)、normal(4英寸左右)、large(5~7英寸)、xlarge(7英寸以上)。在上面的假设2种,我们可以在layout-normal里配置3个页签的tab栏,在layout-xlarge里配置6个页签的tab栏。如果应用在所有设备上布局都一样,那么就不用考虑针对不同尺寸的layout。从图中那些layout*文件夹可以看出,该应用在hdpi及xhdpi上支持横竖屏,而且横竖屏的布局不一致,但没有考虑不同尺寸的设备使用不同布局的情况。

from http://blog.csdn.net/r8hzgemq/article/details/8243119

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: selfimpr

原文地址: http://my.eoe.cn/964494/archive/5704.htm

Android图片适应屏幕大小相关推荐

  1. Android图片自适应屏幕大小

     1.drawable-(hdpi,mdpi,ldpi)的区别 dpi是"dot per inch"的缩写,每英寸像素数. 四种密度分类: ldpi (low), mdpi ( ...

  2. html 网页背景图片根据屏幕大小CSS自动缩放

    腾讯微博和QQ空间的登录背景图片是根据访客的屏幕大小自动缩放的,但是好像是用JQuery代码实现的.先不说要调用jq库拖慢了网页的打开时间,而且对于兼用性不好. 前几天用CSS研究出相同效果的样式代码 ...

  3. 背景图片适应屏幕大小的一些方法

    背景图片适应屏幕大小的一些方法 想要背景图片适应屏幕的大小,背景图片要足够大,可以铺满常用的所有屏幕,还要图片要高清,不能一拉伸就失真,不能显示局部的时候显得很怪异. 方法一: 运用ul的宽度自适应特 ...

  4. Android Studio 根据屏幕大小缩放图片

    我想让APP的界面显示统一的视觉效果,但运行APP的手机屏幕尺寸有所不同,必须根据屏幕大小将图片按比例缩放,下面介绍一种实现方法. 首先获取屏幕大小 DisplayMetrics metrics = ...

  5. android 背景图片自适应屏幕大小,android 设置桌面背景图片适应屏幕大小

    今天做demo,设置桌面每天自动更新背景,但是桌面的背景都是被系统裁剪过的图片,上网百度了一下,有个过时的方法,改进后果然有用了! Bitmap bmp=BitmapFactory.decodeRes ...

  6. Android 获得手机屏幕大小

    Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码 /*** */ package com.example.customvie ...

  7. android 图片占用内存大小及加载解析

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在讲解图片占用内存前,我们先问自己几个问题: 我们在对手机进行屏幕适时,常想可不可以只切一套图适配所有的手机呢? 一张图片加载到手 ...

  8. HTML5如何实现img标签中的图片根据屏幕大小显示相应部分的内容,并保证核心内容可见

    实现以下效果: 有一张较大的图片,希望其在大屏幕上全屏显示,在小屏幕上显示中间核心部分的内容,根据屏幕大小自动调整显示效果. 实现方法: 样式部分 .container {overflow: hidd ...

  9. jquery橡皮擦插件使用 图片适配屏幕大小

    一.首先要导入橡皮擦插件,因为插件是基于jquery的是,所以要在导入插件之前导入jquery <script src="bootstrap-3.3.6-dist/js/jquery- ...

最新文章

  1. 成功解决AttributeError: ‘str‘ object has no attribute ‘decode‘
  2. 封头名义厚度如何圆整_压力容器封头厚度计算
  3. 如何在html指定css,如何在LESS CSS嵌套类上指定html标记?
  4. 吴恩达机器学习 8.应用机器学习的建议
  5. 创建git仓库和常用的命令
  6. php调取 zabbix实时数据_Zabbix监控系统部署详细步骤
  7. 游戏编程之二 windows编程基础
  8. 面试开课吧合并区间算法
  9. iPhone Plus手机的分辨率到底是多少,是1080×1920还是1242×2208?
  10. 全志H6 Android 7.0 平台 修改横竖屏显示
  11. 解决微信小程序 app onLaunch异步请求,在没有请求执行完就加载首页了的问题
  12. 贝叶斯估计及其派生估计准则(极大似然、最大后验证、最小均方)
  13. 华为IT总监徐家骏的10年
  14. layui tabel筛选列 记忆功能
  15. 支付宝年账单html5,2018支付宝年账单哪里查?支付宝2018年度账单怎么看
  16. Python实现一键自动发送直播弹幕
  17. FTP服务器登录界面卡死
  18. MySQL下载安装教程和修改密码(亲测有用)
  19. 考研数据结构之串(4.4)——练习题之将串str中所有值为ch1的字符转换成ch2的字符(C表示)
  20. 编程控制仪器进行自动化测试(Visa驱动、GPIB驱动)

热门文章

  1. 昆曲,古琴,苏州评弹
  2. 李开复:非常看好移动互联网的未来 --记CSDNCTO俱乐部李开复交流会
  3. Android UI控件----ExpandableListView的基本用法
  4. android手势滑动——左右滑动效果实现
  5. FolderBrowserDialog(文件夹浏览对话框)
  6. 开源 免费 java CMS - FreeCMS1.2-标签 userList
  7. [原创]FineUI秘密花园(二十四) — 树控件之数据绑定
  8. SPOJ 4564 Chop Ahoy! Revisited!
  9. ORA-16038的解决(日志无法归档)
  10. hdu 1712(分组背包)