问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

android 的界面布局 怎么适应不同分辨率的手机 以及横竖屏间的切换

发布网友 发布时间:2022-04-24 20:16

我来回答

4个回答

热心网友 时间:2022-04-20 07:46

各种Android操作系统的手机简直就是琳琅满目,屏幕分辨率的差异可想而知。目前比较主流的有WVGA=800x480,HVGA=480x320,另外的还有QVGA=320x240。当然还有魅族M9的DVGA=960x640,还有蛋疼的摩托罗拉的FWVGA=854x480。

  其实,在你layout的xml文件中,编写的时候是不是用了许多的padding呢?如果是,那你就蛋疼了。因为这样的布局永远是无法适应所有手机屏幕的。

  正确的做法应该是使用的是weight属性。将你控件的layout中的width、height设置为fill-parent,不要使用wrap——content。因为wrap-content的大小是不固定的。而weight(权重)这个属性很好的解决了这个问题。

  当包裹在控件外面的Layout的width、height属性都设置为fill-parent时,可以利用weight的反比特性。即如果控件A设置weight为5,控件B设置weight为7,那么A所占的空间为5/(5+7),B所占的空间为7/(5+7)。这样的反比属性对任何分辨率下的手机都是合适的。

  当然,字体就不行了。那怎么保证字体能够跟布局一样能够自适应呢?
  呵呵,很简单,就是在你的res文件夹中创建一个文件夹,叫做values-320x240。其中320x240是你手机屏幕的分辨率,根据你手机屏幕的情况做不同的命名,例如values-800x480。在该文件夹下创建一个dimens.xml文件,定义各种字体的大小。那么系统就会自动根据你手机屏幕的分辨率去调用响应的文件夹。

 另外,值得提醒的是,记得在你默认的values文件下的dimens.xml文件中也要写上相应的字体大小哦,因为当系统无法认识你手机屏幕大小的时候,它会自动去找你默认文件中的

东西,没有写的话程序会崩溃。

************************************************************分割线************************************************************

  在看下面内容之前首先请看你SDK文档中以下这篇文章

  其实google在分辨率适应性的东西已经写的很清楚了,只是我们很多人没去看而已

  以下是结论:
    屏幕分辨率:1024x600
    density:1(160)
    文件夹:values-mdpi-1024x600

    屏幕分辨率:1024x600
    density:1.5(240)
    文件夹:values-hdpi-683x400 由1024/1.5 600/1.5得到,需要四舍五入。

    屏幕分辨率:800x480
    density:1(160)
    文件夹:values-mdpi-800x480

    屏幕分辨率:800x480
    density:1.5(240)
    文件夹:values-hdpi-533x320 由800/1.5 480/1.5得到,需要四舍五入。

  以此类推
    一般情况下需要创建出values 、values-mdpi 、 values-hdpi文件夹,以备在一些没有规定的尺寸屏幕上找不到资源的情况。

    然后在里面使用不同的dimens文件,Layout中不要使用显示的数字,所有的尺寸定义全都援引dimens里面的内容。

    这样能够保证深度UI定制的情况

    另外在工程的default.properties中如果split.density=false,则分辨率适配的时候文件夹命名不需要与scale相除

  例
  屏幕分辨率:800x480
  density:1.5(240)
  文件夹:values-hdpi-800x480

************************************************************分割线************************************************************

  关于dimens

    位置:res\values
    单位:px Pixel 以画面的像素为单位;
  in Inches以画面的多少英寸为单位;
 mm Millimeter以画面的多少毫米为单位;
 pt Points 一点为1/72英寸;
 dp或dip Density-indepentdent 为160dpi屏幕的一个pixel;
 ap Scale-independent Pixels 随屏幕尺寸改变的一个pixel;

1.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)

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

在2.1之前的版本可以通过drawable-800x480, drawable-480x320 等方式实现。

2:layout:放置对应不同分辨率的布局

创建不同的layout文件夹, layout-800x480,layout-480x320, 系统会根据屏幕的大小自己选择合适的layout进行使用。

另外:可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件。

下面列出主流的android机型有:

240x320低端,国产入门级采用,例如HTC G4,G8
320x480中端,大部分基于此分辨率,例如HTC G1,G2,G3,G6, MOTO ME600, SAMSUNG I7500
480x800中高端,大部分基于此分辨率,例如HTC G5,G7, MOTO MT810
480x854MOTO特有的,例如Droid, Milestone, XT800
960x640, 魅族M9

热心网友 时间:2022-04-20 09:04

技巧就是不同的xml布局了,没什么其他的便捷方法。

热心网友 时间:2022-04-20 10:39

你去装几个 启动器就可以。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? android 怎么使布局横向显示 联网电视突然显示无信号 意外险什么时候买?真的有必要买吗? 手机可以上网,但是电视处于无信号状态,咋办? 意外险的投保有哪些限制你知道多少 符合4个条件才算意外的意外险 买了多久可以生效 出国旅游意外医疗保险要提前多长时间买 平安意外险的生效时间和治疗时间怎么理赔 意外险什么时候生效 白色桑蚕丝的衣服如何洗? 哪个机构的人工智能辅导课专业? 白色蚕丝衣服洗后发黄怎么变白? 未来已来,人工智能+教育,路在何方? 人工智能教育平台有哪些? AI人工智能教育的未来发展方向是什么? 人工智能教育是什么? 大学生常见的情绪障碍不包括什么? 心理健康的标准不包括什么 大学生情绪健康表现在哪三个方面 健康的情绪表现 android 横屏和竖屏布局不同时,需要onCreate()重新载入,如何不重新载入让数据保存,并切换不同的布局 开发安卓手机软件,新建一个布局文件,如何将它设置为横屏, 如何让Android自适应不同分辨率或不同屏幕大小的layout布局 安卓如何实现横屏后改变页面布局 android开发中如何旋转布局 我用windowsandroid 运行软件自动横屏,怎么设置 android 切换横屏时怎么全屏 android如何在代码中判断横竖屏 15年股指期货交割时间表 2015年期指交割日是什么时候 2015年7月份股指期货的交割日是哪天? 期指交割日是什么时候? 1、股指交割日怎么算?有人说是合约的第三个周五,合约是哪天?怎么看?2... 二零一五年九月期指交割是哪天 期指交割日是什么时间 期指如何交割? 期指交割日是什么时间? 2o15年6月股指期货交割是贴水还是升水 闪讯用户如何解决DNS污染 和网页商店都打不开是DNS污染还是被墙了