当前位置:   article > 正文

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

apk自适应屏幕代码

一、编写背景

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

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。

代码如下:

  1. package com.wang.uimaker.suitLayout;
  2. import android.content.Context;
  3. import android.util.AttributeSet;
  4. import android.util.Log;
  5. import android.view.View;
  6. import android.widget.RelativeLayout;
  7. public class SuitRelativeLayout extends RelativeLayout {
  8. private Context mContext;
  9. private boolean isMeasured = false;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/332401
推荐阅读
相关标签
  

闽ICP备14008679号