美文网首页
Android-多分辨率屏幕适配

Android-多分辨率屏幕适配

作者: 小呆呆666 | 来源:发表于2020-04-07 00:07 被阅读0次
implementation 'com.ytman:TaoLibrary:1.2.2'

前言

  • 讲真的,在项目开发中,屏幕适配是非常重要的,在Android上面有俩个很火的屏幕适配库:AndroidAutoLayout和AndroidAutoSize,AndroidAutoLayou用起来感觉还是略有点麻烦;AndroidAutoSize我之前,在刚开始一个项目里面引入了,可是这个库的侵性太强,按照头条的适配原理去实现的,改变了:density 的值,这个值是个很重要的值:px = dp * density,连toast大小都强行改变了,当然在issues里找到解决办法,然后我之前封装的dialog也改变了等等,还遇到其他一些问题,我佛了,弃用了。
  • 在我想法里,我只需要Application里注册下,然后在Activity一行代码适配下view就行了,不适配的view,样式都不会改变,最好还能把适配ViewGroup中某个ViewGroup/View还原回去,界面适配又是很重要的部分,还是自己搞懂下吧,如果需求调整,自己也可动态调整代码。
  • 适配功能实现只有俩个类:AutoUi和ScreenParam,代码只有五百行左右哟。在方法命名和对外提供的api,做了较多思虑,而且注释写的灰常灰常详细,有兴趣可以去看看,保证你一看就懂,这套适配在公司几个项目用起来还不错。
  • 使用了适配后,在XML里面,直接填设计图上的尺寸标注(单位:px)就行了,这边在XML布局直接写的单位为:px

使用

  • 在Application里注册下设计稿的尺寸
 /** 一行代码注册下设计稿
* 请在Application里初始化设计稿的屏幕参数 (init方法参数)
* @param context 上下文
* @param width   屏幕宽度参数 (如果参数小于等于0,则自动设置默认参数)
* @param height  屏幕长度参数 (如果参数小于等于0,则自动设置默认参数)
* @param isFontScale  字体大小根据系统的“字体大小”设置选项来进行缩放  false:不开启  true:开启
* 默认参数:默认按照: 长/宽:1334/750 ----> iPhone 6的尺寸稿设计
*/
AutoUi.getInstance().init(this, 750, 1334, false);

/****************Application完整代码***********************/
public class MainApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        AutoUi.getInstance().init(this, 750, 1334, false);
    }
}

/****************在其他需要适配的Activity里面***********************/
View rootView = findViewById(android.R.id.content);  //直接获取根View
AutoUi.with().asWidth(rootView);
*** mBinding = ***.inflate(getLayoutInflater()); //通过ViewBinding获取根View
AutoUi.with().asWidth(mBinding.getRoot());
/****************在Fragment或者RecyclerView里面***********************/
LayoutInflater inflater = LayoutInflater.from(mContext);
View view = inflater.inflate(R.layout.xxxxx, parent, false); //拿到View就行,然后对这个View进行适配
AutoUi.with().asWidth(view);

对外提供方法(AutoUi)

方法名 含义
getInstance() 实例化:获取AutoUi适配类单例
with() 实例化:获取AutoUi适配类单例(整个短点的方法名)
init(Context context, int width, int height, boolean isFontScale) 请在Application里初始化设计稿的屏幕参数
@param context 上下文
@param width 屏幕宽度参数(如果参数小于等于0,则自动设置默认参数)
@param height 屏幕长度参数(如果参数小于等于0,则自动设置默认参数)
@param isFontScale 字体大小根据系统的“字体大小”设置选项来进行缩放 false:不开启 true:开启
默认参数:默认按照: 长/宽:1334/750 ----> iPhone 6的尺寸稿设计
asWidth(View view) 水平方向按照宽度适配,垂直方向按照高度适配
推荐:小程序界面适配就是按照屏幕宽度适配,一般情况可以使用该种适配
@param view ViewGroup/View 均可
asHeight(View view) 按照屏幕高度适配
不支持下滑的界面,可采用高度适配: 可保持布局不会超出屏幕
@param view ViewGroup/View 均可
asWidthAndHeight(View view) 水平方向按照宽度适配,垂直方向按照高度适配
eg:保留该种适配,某些情况,该种适配视觉效果较好
@param view ViewGroup/View 均可
asCancel(View view) 取消已经适配过的view
说明:这是一个较为重要的方法,如果已经将所有布局适配了,其中某个模块并不想适配了,可以调用这个方法,将某个适配的ViewGroup或View还原。
场景:该方法使用场景,一般是还原某个适配过的第三方控件,项目中遇到过这种问题,所以特地写个取消适配方法
@param view ViewGroup/View 均可

实时预览适配布局

  • 点击图标
-
  • 选择 "New Hardware Profile"
image
  • 这里填上你的设计稿的尺寸就行了。我在这里就设置为IPhone 6的尺寸的,主要是公司的UI,基本都是按照这个尺寸设计的:宽/长:750/1334,Device Name随你自己命名了
image
  • 接下来,next就行了
image image image

Ok,这样就完成了!

  • 重启下Android Studio,就能看见我们新建虚拟机
  • ok,这样我们就是实时预览咱们的界面了
image

相关文章

  • android屏幕适配

    Android屏幕适配 安卓设备非常多,碎片化严重,需要适配~ 屏幕尺寸:对角线 屏幕分辨率:横纵向上的像素点数单...

  • Andorid屏幕分辨率和适配规则

    在《iPhone屏幕分辨率和适配规则(基础篇)》,《iPhone屏幕分辨率和适配规则(规则篇)》和《iPhone屏...

  • 安卓屏幕分辨率

    话不多说,推荐几篇有关安卓屏幕适配文章,以后会不定时更新: 分辨率概念 Android屏幕适配(不同的屏幕分辨率和...

  • Android屏幕适配-基础篇

    Android屏幕适配-基础篇Android屏幕适配-应用篇 重要概念 什么是屏幕尺寸、屏幕分辨率(px)、屏幕像...

  • Android-多分辨率屏幕适配

    Github:https://github.com/CNAD666/TaoLibrary 在gradle(Modu...

  • iPhone屏幕分辨率和视频规则(实现篇)

    在文章《iPhone屏幕分辨率和适配规则(基础篇)》和《iPhone屏幕分辨率和适配规则(规则篇)》中,讲了iPh...

  • 安卓:日常开发屏幕适配总结

    Android 屏幕适配方案Android多分辨率适配框架Android 屏幕适配之dimens(上线项目中实际应...

  • 016--cc.Widget与屏幕适配

    屏幕适配 1: 一款游戏能适应不同的手机分辨率,我们把这个称为屏幕适配;2: creator屏幕适配策略: 固定...

  • iPhone X屏幕适配

    iPhone X开发设计屏幕适配。iPhone X(10)屏幕分辨率与适配,iOS开发适配与UI设计问题。 htt...

  • iOS屏幕适配概述

    [toc] 1 屏幕适配简介 1.1 屏幕发展历史 手机型号 |屏幕大小 | 分辨率------------ | ...

网友评论

      本文标题:Android-多分辨率屏幕适配

      本文链接:https://www.haomeiwen.com/subject/etuwphtx.html