赞
踩
目前网上已经有许多自适应布局的方法,其中包括有
1)多个尺寸图片:根据不同像素屏幕自动选取图片,这样造成了apk要集成很多图片,安装包过大。
2)不同尺寸layout:要针对各种不同屏幕制作布局,工作量大,后期若有改动不好维护
3)线性布局的权重,相对布局的处理:一定程度上解决了适配问题,但是不够精细,比如相对距离这些不好处理,如果使用空白控件填充,也会让布局变得繁琐。
4).9图片伸缩:在图片适配上很有效果,但是很多控件不适用。
5)dimen定义各个屏幕尺寸的标准长宽:在布局中,所有尺寸都引用此文件中尺寸,比layout工作量小一点,但仍然繁琐。
本篇文章主要是介绍如何使用一套布局,能适配各种各样的屏幕,达到根据屏幕长短胖瘦,自动适配的目的。
demo地址:https://download.csdn.net/download/wxuande/11186203
不同屏幕,像素大小不同。如果以其中一个屏幕像素为基准(比如720*1280),使用px为单位布局,那么为了在其他屏幕上也能以相同的布局形态展现出来,就需要根据当前屏幕像素的大小,各个控件长宽各按照等比缩放,来满足当前布局的要求。比如当前的屏幕为480*800,那么宽的缩放比例为:480/720=0.667,长的缩放比例为:800/1280=0.625 。在当前屏幕上展示原基准布局的时候,就需要对里面各个控件的长宽进行缩放,即各个view的 当前长度=原长*0.667,当前宽度=原宽*0.625。如此,布局在480*800的屏幕上,就毫无违和感了。
我在1080*1920的上面采用px单位布局,然后在720*1280上横屏和竖屏的效果如下:
4.1 重写relativeLayout
在其onmeasure方法中,对子view进行重新赋予尺寸,以便在layout时能正确完成定位和后续draw。
代码如下:
- package com.wang.uimaker.suitLayout;
-
- import android.content.Context;
- import android.util.AttributeSet;
- import android.util.Log;
- import android.view.View;
- import android.widget.RelativeLayout;
-
- public class SuitRelativeLayout extends RelativeLayout {
- private Context mContext;
- private boolean isMeasured = false;
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。