Android 适配

android中为实现多屏幕适配,可以在layout_hdpi/layout_mdip/layout_ldpi/layout 目录下放置布局文件。

如果一个大屏手机适配的话,适配的顺序是layout_hdpi->layout_mdpi->layout->layout_ldpi;

如果一个中屏手机适配的话,适配的顺序是layout_mdpi->layout->layout_hdpi->layout_ldpi;

如果一个小屏手机适配的话,适配的顺序是layout_ldpi->layout->layout_mdpi->layout_hdpi;

假如有一个应用的默认布局文件放置在layout目录中,个别界面在中屏手机适配有问题,单独定制了布局文件,并放置在layout_ldpi目录中。

这样做是有问题?我们从上面的适配顺序看,当在大屏手机上显示该界面时,查找布局文件的顺序是layout_hdpi->layout_mdpi->layout->layout_ldpi,可以知道大屏手机该界面的布局文件是在layout_mdpi中,而不是layout中。

推荐做法:

1.默认布局文件放置在layout_mdpi,而layout中不放置任何文件;

2.默认布局文件放置在layout中,但是如果针对特种屏幕进行了定制,那么该界面的布局文件,在layout_hdpi/layout_mdpi/layout_ldpi三个目录中各放一份;

 

 

非Android、iphone的手机适配
对于其他的非Android、iphone手机,则需要更多地考虑其适配规则,这些手机系统不提供自适应的适配。
简单整理规则如下:
1) 向上适配(标准屏向更大【分辨率高,物理尺寸大】的屏幕适配)
在向更大的屏幕适配时,根据设备分辨率的不同,会分为两种状态。
A.如果两者的屏幕分辨率密度(dip)差不多,物理尺寸更大的屏幕。那可以直接在当前尺寸上拉长、拉宽即可,图标、行距都可以保持不变。
B. 如果屏幕密度要大很多,物理尺寸差不多的。则适配点包括:
设计多套图标,需要有更大分辨率的图标
使用不同的字体,需要更大的字体来适配大设备分辨率的屏幕
增加行间距
自适应放大内容中的图片
Tab页签 需要根据屏幕的大小来确认每屏最多显示的数目。
考虑一些复杂界面,增大界面中的一些元素的分辨率,会导致许多东西需要重新设计。这种情况需要重新设计该界面。
2) 向下适配
在向更小的屏幕适配,这种情况较少,那会集中在如下几点:
考虑一些极限点的改进,需要适配到小屏幕的手机中,如标题的最大字数等。
title、bottom栏与小屏幕宽度适配。
考虑到行高(行信息展示)的设计是否适合更小的屏幕高度。
在结构上,需要考虑在小屏幕中,显示是否合适。
根据屏幕密度的比例来设计屏幕元素,需要更小分辨率的屏幕元素
使用小的字体,具体的大小需要根据屏幕的大小来设定。
(3)竖屏横屏适配
横竖屏的适配,在本文中,不过多讨论,这里只是简单的整理一下,我自己的理解。
对于不同功能的应用,都有其特定的页面展现形式,个人并不赞同蛮目对任何应用不加选择的都去适配横屏。
个人观点如下:
1) 不同的应用,在设计的过程中,对于选择不同的屏幕有不同的选择,如普通list多的应用,竖屏更合适;显示图片更多的界面,或者想更好的展示全景的应用,横屏更合适。
2) 不必遵循,对任何的应用都可以自动进行横屏竖屏的切换。如果觉得没有必要横屏或者竖屏的应用,就可以不切换。
3) 由于用户在使用手机的过程中,经常会无意中调整位置,从而导致手机误认为是要进行横竖屏的转化,从而更容易导致操作上的失误,引起用户的反感。
4) 横竖屏的切换时,允许用户对于同一个界面有不同的展示方式。例如不一定在竖屏时时list方式显示,在横屏时也和竖屏保持一致,这时横屏可以有更好的适应横屏的展示方式,使用户更好的操作。
由于手机系统各异,手机的屏幕尺寸五花八门,屏幕的性能也呈现多样性,还有触摸屏和非触屏的区分,这四个变量结合起来,会有无数种不同的情况,如何能使你的应用完美地展现给用户,适配固然很重要。但是,更重要的是你要在适配之前,确定应用的目标群体。如果你的应用主要是针对高端手机用户的,那你何必去考虑低端的手机呢?毕竟为了很少的用户,使你花了很大的力气,可能会有不值得,这一点绝对值得每一个设计师思考。xiaofeiwang,本内容来自腾讯内部分享,请勿外传!

 

2.适配原则
1) 客户端的logo,在各个手机上都应该清晰地显示
2) 标题或者底部栏必须100%的与手机宽度适配
3) 文字内容如果显示不下的话,可以自动适配宽度进行折行
4) 图片可以根据宽度进行自动缩放,屏幕宽度超过图片本身时,显示图片本身的大小
5) 适配过程中,界面的元素的宽高最小值应该符合用户的主观舒适范围值。
6) 不能完全使用分辨率的绝对比例来对界面布局进行缩放;xiaofeiwang,本内容来自腾讯内部分享,请勿外传!

 

1.尽量使用线性布局(LinearLayout)和相对布局(RelativeLayout),不要使用绝对布局。
2.尽量使用dip和sp,不要使用px。
3.为不同的分辨率提供不同的布局文件和图片。
例如:
 
4.在AndroidMainfest.xml中设置多分辨率支持。 
复制代码 代码如下:
<supports-screens
  android:largeScreens="true"
  android:normalScreens="true"
  android:anyDensity="true"
  android:smallScreens="true" />
 
总结一下:
  1)android:anyDensity="true",系统会依据屏幕密度,自动去找对应的文件夹。
  2)android:anyDensity="false"
(1) 如果drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源
(2) 如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源。
(3) 如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有对应的图片资源,那么系统会加载drawable-mdpi文件夹中的资源
详细出处参考:http://www.jb51.net/article/34716.htm

 

1、布局尽量简单,不要嵌套太多,层次一般要求在 10 个层以下;
2、从 MDPI 开始,在这个 dpi 下的 dp=px( 像素、 dp 转化公式: px=dp*(dpi/160))
3、以 dp sp 为位图与字体单位;
4、将布局分成多个小布局 , 然后 iinclude 进来;
5、不要将 px 硬编码进代码 , dp sp 为位图与字体大小单位

 

一直对px、dip、sp、dp这几个单位概念很模糊。网上查了下,基本理论上是清楚了。

1.px (pixels)(像素):屏幕上的点 ,与密度相关。密度大了,单位面积上的px会比较多。

2.dip或dp(与密度无关的像素)。这个和设备硬件有关,为了支持WVGA、HVGA和QVGA 5进制空间推荐使用这个。一种基于屏幕密度的抽象单位。设置一些view的宽高可以用这个,一般情况下,在不同分辨率,都不会有缩放的感觉。如果用px的话,320px占满HVGA的宽度,到WVGA上就只能占一半不到的屏幕了,那一定不是你想要的。
3.sp(与刻度无关的像素)放大像素– 主要处理字体的大小。



屏幕大小和密度对照表 :


下面是在manifest中设置app在不同分辨率时,是否支持多密度的方法。
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    ...
    <supports-screens
        android:smallScreens="true"
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true" />

</manifest>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值