Android屏幕适配的一点新的心得

最近在做项目的过程中又开始了万年不变的屏幕适配。正好也借着这个机会重新温故了一下Android屏幕适配的一些小窍门,不想竟然有了点新的心得,所以赶紧挽起袖子撸一篇以免明天就忘记了…

首先需要声明一下此篇文章可能并不会适合所有的屏幕适配。因为UI designer(注意是designer, 否则她们会生气的)只会给我们一套最高分辨率下的图片,剩下的完全交给我们Android工程师来做了。

这就造成了两个比较严重的问题:

  1. 在所有的手机都使用分辨率较高的图片,在个别低端手机会直接OOM
  2. 使用一套图片,肯定需要在不同的手机上做适配

至于内存的问题,暂时先不说。这里只想强调一句: 建议各位以后买手机千万别买小米手机!!!

回到这篇文章的主题,这次做屏幕适配,因为只有一套图片所以主要从两方面解决适配的问题,主要思路就是:

  1. 控件大小 – 使用PercentFrameLayout布局或者PercentRelativeLayout
  2. 控件位置 – 在Java代码中动态计算

用下图来做个例子:
这里写图片描述
上图中,汽车和小熊以及积木、太阳等都是单独的图片资源,甚至连房子上的时钟也是单独资源,这样如果要在所有的手机屏幕上的显示效果一致。我的做法就是先按照UI设计图作为标准,算出相对的大小比例和相对位置。

 1. 算出来之后就可以在xml文件中使用PercentFrameLayout来指定某一控件的百分比。
 2. 最后只要在Java代码中先将大背景的根据屏幕宽高来算出size,但是有一个前提就是我们必须先指定某一方向是填满屏幕的(根据产品需求而定)

还是拿上面的图片作为例子,UI给我的图片宽高是1566 * 1174. 并且根据UI提出的需求图片的水平位置上必须完整显示,因此图片的宽就必须填充屏幕,而高度是可以超出屏幕的。 因此可以得出以下等式:

屏幕宽度 / 实际图片高度 = 1566 / 1174

进而得出在Java代码中实际高度是

实际图片高度 = 屏幕宽度 * 1174 / 1566
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值