软录 · 2023年6月22日

安卓适应多个分辨率布局|Android界面布局怎么样适应不同分辨率的手机

① 在android中如何让你的程序适应各种分辨率

各种Android操作系统的手机简直就是琳琅满目,屏幕分辨率的差异可想而知。目前比较主流的有WVGA=800×480,HVGA=480×320,另外的还有QVGA=320×240。当然还有魅族M9的DVGA=960×640,还有蛋疼的摩托罗拉的FWVGA=854×480。其实,在你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-320×240。其中320×240是你手机屏幕的分辨率,根据你手机屏幕的情况做不同的命名,例如values-800×480。在该文件夹下创建一个dimens.xml文件,定义各种字体的大小。那么系统就会自动根据你手机屏幕的分辨率去调用响应的文件夹。 另外,值得提醒的是,记得在你默认的values文件下的dimens.xml文件中也要写上相应的字体大小哦,因为当系统无法认识你手机屏幕大小的时候,它会自动去找你默认文件中的东西,没有写的话程序会崩溃。

② Android界面布局怎么样适应不同分辨率的手机

各种Android操作系统的手机简直就是琳琅满目,屏幕分辨率的差异可想而知。目前比较主流的有WVGA=800×480,HVGA=480×320,另外的还有QVGA=320×240。当然还有魅族M9的DVGA=960×640,还有蛋疼的摩托罗拉的FWVGA=854×480。其实,在你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-320×240。其中320×240是你手机屏幕的分辨率,根据你手机屏幕的情况做不同的命名,例如values-800×480。在该文件夹下创建一个dimens.xml文件,定义各种字体的大小。那么系统就会自动根据你手机屏幕的分辨率去调用响应的文件夹。另外,值得提醒的是,记得在你默认的values文件下的dimens.xml文件中也要写上相应的字体大小哦,因为当系统无法认识你手机屏幕大小的时候,它会自动去找你默认文件中的东西,没有写的话程序会崩溃。************************************************************分割线************************************************************在看下面内容之前首先请看你SDK文档中以下这篇文章其实google在分辨率适应性的东西已经写的很清楚了,只是我们很多人没去看而已以下是结论:屏幕分辨率:1024x600density:1(160)文件夹:values-mdpi-1024×600屏幕分辨率:1024x600density:1.5(240)文件夹:values-hdpi-683×400 由1024/1.5 600/1.5得到,需要四舍五入。屏幕分辨率:800x480density:1(160)文件夹:values-mdpi-800×480屏幕分辨率:800x480density:1.5(240)文件夹:values-hdpi-533×320 由800/1.5 480/1.5得到,需要四舍五入。以此类推一般情况下需要创建出values 、values-mdpi 、 values-hdpi文件夹,以备在一些没有规定的尺寸屏幕上找不到资源的情况。然后在里面使用不同的dimens文件,Layout中不要使用显示的数字,所有的尺寸定义全都援引dimens里面的内容。这样能够保证深度UI定制的情况另外在工程的default.properties中如果split.density=false,则分辨率适配的时候文件夹命名不需要与scale相除例屏幕分辨率:800x480density:1.5(240)文件夹:values-hdpi-800×480************************************************************分割线************************************************************关于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 (480×800),FWVGA (480×854)(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320×480)(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240×320)系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。在2.1之前的版本可以通过drawable-800×480, drawable-480×320 等方式实现。2:layout:放置对应不同分辨率的布局创建不同的layout文件夹, layout-800×480,layout-480×320, 系统会根据屏幕的大小自己选择合适的layout进行使用。另外:可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件。下面列出主流的android机型有:240×320低端,国产入门级采用,例如HTC G4,G8320x480中端,大部分基于此分辨率,例如HTC G1,G2,G3,G6, MOTO ME600, SAMSUNG I7500480x800中高端,大部分基于此分辨率,例如HTC G5,G7, MOTO MT810480x854MOTO特有的,例如Droid, Milestone, XT800960x640, 魅族M9

③ 如何让Android自适应不同分辨率或不同屏幕大小的layout布局

一:不同的layout 只需要在res目录下创建不同的layout文件夹,比如layout-640×360,layout-800×480,所有的 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 (480×800),FWVGA (480×854) (2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320×480) (3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240×320) 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

④ 请问下,在Android中如何做到屏幕自动适配多种分辨率,在res下建立不同分辨率文件夹这个就免了,太复杂~

android 不同的密度下对应的像素是不同的,中密度是 1:1的关系,高密度是1:1.5,低密度是1:0.75。如果你的图片默认是放在drawable里,那这是默认中密度下的,如果手机是高密度,就会把图片拉伸1.5倍再显示,这样图片可能会有失真的情况。系统的图片处理是在不同的密度下做成不同像素的图片。比如:一张图片 低密度下放入一张 36*36 ,中密度下是 48*48, 高密度下是64*64。 如果你只是背景图片填充屏幕,你只要设置fill_parent就可以实现,但是你里面的内容在不同的密度下就会显示大小都不同, 如果里面的内容不管是什么密度下都要按照那个比例来的话(比如最上面是title,中间是内容,下面是底部懒,你想这个在不同的手机下都以1:9:1的比例显示出来),那就可以设置layout_weight ,最外面Linearlayout 里面的每个布局 的width设置为wrap_content,同时设置weight,这个数值要反过来设置,这样就能保证在任何手机上都是以这个比例显示内容。其实也可以只做一套图 放在中密度 或者高密度下 然后让程序自己去拉伸。如果需要设置大小,最好是在布局里设置dip,这样就能保证在不同的密度下显示大小一样,如果程序代码里控制,代码里控制的是px, 在不同的密度下就会显示不同,以上是我自己研究的,如果不对请指出,一起讨论

⑤ 为了使android适应不同分辨率机型,布局时字体单位应用什么,像素单位应用是什么

字体用sp,控件大小宽度用dp,但是控件能用权重的话,布局会更好

⑥ Android界面布局怎么样适应不同分辨率的手机

我一般都会使用相对布局,通过获取手机的分辨率以及计算控件的宽高比例和控件所处理想屏幕中所占的比例来适配所有的手机,保证很复杂的图片不会被拉伸压缩导致变形扭曲。

⑦ android开发如何让一个app自适应两种分辨率的屏幕

使用dp单位。LinearLayout中合理使用weight权重这个属性。