Android 屏幕万能自适应(自定义适配)

本文介绍了一种实现Android屏幕万能自适应的方法,通过一套布局和等比缩放技术,使应用能在不同尺寸屏幕上保持一致的显示效果。文章详细讲解了原理,并提供了具体实现步骤,包括自定义SuitRelativeLayout及其在布局XML中的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、编写背景

目前网上已经有许多自适应布局的方法,其中包括有

1)多个尺寸图片:根据不同像素屏幕自动选取图片,这样造成了apk要集成很多图片,安装包过大。

2)不同尺寸layout:要针对各种不同屏幕制作布局,工作量大,后期若有改动不好维护

3)线性布局的权重,相对布局的处理:一定程度上解决了适配问题,但是不够精细,比如相对距离这些不好处理,如果使用空白控件填充,也会让布局变得繁琐。

4).9图片伸缩:在图片适配上很有效果,但是很多控件不适用。

5)dimen定义各个屏幕尺寸的标准长宽:在布局中,所有尺寸都引用此文件中尺寸,比layout工作量小一点,但仍然繁琐。

本篇文章主要是介绍如何使用一套布局,能适配各种各样的屏幕,达到根据屏幕长短胖瘦,自动适配的目的。

demo地址:https://download.youkuaiyun.com/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;

    public SuitRelativeLayout(Context context) {
        super(context);
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值