Android 开发中 如何做到XML多屏幕适配?

现在我设置的页面在android4.7中可以全部显示出来在别的版本中不能完全显示出来?应该如何解决呢?我在配置页面时用长款用的都是dp... 现在我设置的页面 在android4.7中可以全部显示出来 在别的版本中 不能完全显示出来?应该如何解决呢?我在配置页面时用 长款用的都是dp 展开
 我来答
huanglenzhi
推荐于2016-09-25 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517198
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部
  Android上面解决适配不同尺寸(分辨率)和密度的问题,主要是通过以密度分类,再加上分辨率的方式来减化适配不同尺寸屏幕的工作量.
  一般来讲,屏幕分辨率越高,清晰度也应该越高,也即其密度也应该越大,否则会看起来很不清楚,比如4寸的屏幕只显示100个像素,这就近距离看电影,或者看投影仪一样,非常的粗糙和不清晰.所以,Android主要是以屏幕密度来区分不同的设备:
  高密度: hdpi (High dots per inch)
  中等密度: mdpi (Medium dots per inch)
  低密度: ldpi (Low dots per inch)
  并且布局中推荐使用密度无关单位dip或dp,来作为长度或者宽度的单位.这样,从理论上来讲,开发者只需要做:
  1. 为不同的密度屏幕准备图片资源
  (图片是没办法的,因为图片的长度和宽度是固定的像素值,不能够随密度变化而变化,可以强行拉伸,但图片会失真.当然也有9 Patch图片可以解决随意拉伸的问题.但普通的图片的长度和宽度是固定的.
  2. 用dip作为单位来指定长度或者宽度
  就可以适配所有的设备,让布局在所有的屏幕上都得到比较好的显示效果.
  当然,现实的生活没有这么完美,各种设备千差万别.但是总体仍可分为这三大类,为这三大类准备好图片后,其他的只要与某一类较接近,即使稍有拉伸或失真,也不太明显,是可以接受的.所以,对于一般性的应用程序,写一个布局文件在layout中,为三种密度准备图片drawable-hdpi, drawable-mdpi, drawable-ldpi,就足以应对80%的设备.
  res/
  drawable-hdpi/
  ic_launcher.png
  drawable-mdpi/
  ic_launcher.png
  drawable-ldpi/
  ic_launcher.png
  layout/
  main.xml
  (这里可能有点过时了,因为现在多了xdpi,而且很多设备也是xdpi的.)
  但是光以密度屏幕来分类和处理还不够.随着设备的越来越多,以及屏幕尺寸越来越大,还有就是Tablet的出现,又会出现这样的问题:设备的屏幕密度虽然不高,但其分辨率很高.举个简单的例子:iPad2的分辨率是1024x768,iPhone 4 960x640,但是iPhone 4的密度是326ppi,远大于iPad2.但是,无论密度有多高它的屏幕就那么,最多能显示960x640个像素点,一个1024*768的图片在iPad上可以看到全部,而iPhone上只能看到一大半!这也是为什么用iPad来运行iPhone上的应用程序时,只是以屏幕中间的一部分来模拟显示的原因.
  对Android来说也是一样的.如此一来,即使相同的dpi,假如其屏幕尺寸非常大,那么为其准备的图片将被拉伸很大或者显示不全.UI元素也会被拉伸很长.这样并不是很好的体验.对于尺寸大的屏幕应该让其显示更多的内容,而不是把一部分元素拉伸很大.所以,很多手机安卓应用如果未经专门适配,在平板上直接使用体验将会是非常差的.
  为了解决这样的问题,就还必须以屏幕尺寸来区分设备
  主要有四种屏幕尺寸:small, normal, large and xlarge
  这主要是配合屏幕密度来一起使用,比如,适配平板的图片:
  drawable-xlarge-hdpi/ic_launcher.png
  这里就要提到了密度,尺寸和分辨率的对应关系了. 屏幕分辨率是随设备变化最明显的一个,上面的二种分类方法仅是对屏幕进行的大致的一个分类.虽然屏幕分辨率与密度没有直接的关系,但是所有的设备都基本上一致的:
  ldpi QVGA 240*320 0.8
  mdpi HVGA 320*480 1.0
  hdpi WVGA 480*800 1.5
  hdpi qHD 540*960 1.5
  xdpi WXGA 720*1280 2
udbfnsse
2014-10-08 · TA获得超过1648个赞
知道小有建树答主
回答量:592
采纳率:100%
帮助的人:491万
展开全部
高度适配问题,最外层layout你可以采用
LinearLayout
里面包含 的控件可以将 layout_heght 设置为0dp
并且加上 layout_weight 这个属性
layout_weight表示当前这个view占当前布局的比重
比如有上面的四个文本框占总屏幕的4/5,下面一行文字占1/5
上面的的layout_weight = "4",下面的一行文字的就设置 layout_weight = "1"
追问
但是我有几个空间设置了 外边距 设置了外边距的空间 也可以这么做吗
追答
左右边距应该是不受影响的,但是上下的边距可能需要再调整了,但是这个方法是能适配所有分辨率的。至少比显示不出来强吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
哈哈88681
2014-10-08
知道答主
回答量:1
采纳率:0%
帮助的人:2.2万
展开全部
哪显示不出来
追问
你看我发的第一张图 下面有1行文字  第二第三张 没都显示出来
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式