刘海屏适配
项目上线了总免不了适配问题,
注:该方案支持热更适配,哪怕是上线项目也可以及时开启适配及调整适配程度。
原理:
通过获取设备型号及计算屏幕分辨率,在根据是否刘海屏调整侧边按钮的 Anchored Position 偏移量,从而避过刘海遮挡。


```csharp
using System;
using System.Collections;
using System.Collections.Generic;
using Sirenix.OdinInspector;
#if UNITY_EDITOR
using Sirenix.Utilities.Editor;
using UnityEditor;
#endif
using UnityEngine;[ExecuteAlways]
public class UI_NotchAdapter : MonoBehaviour
{public enum AdapterType{ePosY_Minus_AdaptY,eOffsetMaxY_Minus_AdaptY,eSizeDeltaY_Set_AdaptY,eSizeDeltaY_Minus_AdaptY,}[System.Serializable]public class UI_NA_Data{[LabelText("需要适配的UI对象")]public RectTransform mRectTransform_;[LabelText("适配方式")]public AdapterType mAdapterType_;}[ListDrawerSettings(ShowIndexLabels = true, Expanded = true), LabelText("屏幕适配数据"), ShowInInspector]public List<UI_NA_Data> mAdaptDatas_ = new List<UI_NA_Data>();private void Awake(){}private void OnDestroy(){}void DoAdapterLogic(bool preview = false){if (mAdaptDatas_ != null){for (var i = 0; i < mAdaptDatas_.Count; ++i){var data = mAdaptDatas_[i];if (data != null){GameManager gm = null;if (!preview)gm = GameManager.Instance;switch (data.mAdapterType_){case AdapterType.ePosY_Minus_AdaptY:{if (data.mRectTransform_ != null){var mPos = data.mRectTransform_.transform.localPosition;               data.mRectTransform_.transform.localPosition = new Vector3(mPos.x, mPos.y - gm.MNotchAdaptY_, mPos.z);}}break;case AdapterType.eSizeDeltaY_Minus_AdaptY:{if (data.mRectTransform_ != null){var rSize = data.mRectTransform_.sizeDelta;data.mRectTransform_.sizeDelta = new Vector2(rSize.x, rSize.y - gm.MNotchAdaptY_);}}break;case AdapterType.eSizeDeltaY_Set_AdaptY:{if (data.mRectTransform_ != null){var rSize = data.mRectTransform_.sizeDelta;data.mRectTransform_.sizeDelta = new Vector2(rSize.x, gm.MNotchAdaptY_);}}break;case AdapterType.eOffsetMaxY_Minus_AdaptY:{if (data.mRectTransform_ != null){var rectTop = data.mRectTransform_.offsetMax.y;var rectRight = data.mRectTransform_.offsetMax.x;data.mRectTransform_.offsetMax = new Vector2(rectRight, rectTop - gm.MNotchAdaptY_);}}break;}}}}}// Start is called before the first frame updatevoid Start(){if (Application.isPlaying){DoAdapterLogic();}}
}

将该代码挂到需要调整的适配的ui上,需要注意的是gm.MNotchAdaptY_是刘海屏的高度,需要自己设置更换。
使用如下:
拖动对应的对象,选好适配方式即可


【Unity】工具类系列——UI刘海屏适配相关推荐

  1. Android刘海屏适配全方案(华为、小米、Vivo、Oppo)

    前言 目前市面上的刘海屏和水滴屏手机越来越多了,颜值方面是因人而异,有的人觉得很好看,也有人觉得丑爆了,我个人觉得是还可以.但是作为移动开发者来说,这并不是一件好事,越来越多异形屏手机的出现意味着我们 ...

  2. Android刘海屏适配精炼详解

    一.前期基础知识储备 话不多说,这么多刘海屏手机今年集中爆发,所以尽管刘海屏不好看,但是还是要适配. 2017年苹果X开启了刘海屏时代,2018年集中爆发,纷纷采取刘海屏这一策略来实现全面屏的概念(看 ...

  3. Android 系统(70)---Android刘海屏适配方案

    Android刘海屏适配方案 什么是刘海屏 随着iPhone X发布,国内一些厂商也推出了刘海屏手机,即将发布的Android p也提供了对刘海屏的支持.so,我们的app也要提前做好适配. 屏幕的正 ...

  4. 详解Android刘海屏适配

    Apple一直在引领设计的潮流,自从 iPhone X 发布之后,"刘海屏" 就一直存在争议,本以为是一个美丽的错误(Bug),却早就了一时间"刘海屏"的模仿潮 ...

  5. Android刘海屏适配

    Android刘海屏适配 全屏模式下刘海屏黑边(内容区域下挫)问题,支持国国内 华为,小米,OPPO/VIVIO 非原生9.0系统的刘海屏 刘海屏是Android9.0之后才支持的 详见源码 andr ...

  6. android刘海屏手机专业术语叫什么,Android刘海屏适配精炼详解

    一.前期基础知识储备 image 话不多说,这么多刘海屏手机今年集中爆发,所以尽管刘海屏不好看,但是还是要适配. 2017年苹果X开启了刘海屏时代,2018年集中爆发,纷纷采取刘海屏这一策略来实现全面 ...

  7. Android P版本 刘海屏适配 与WindowInsets,DisplayCutout使用

    Android P版本的发布,引入了刘海屏的概念,像华为nova 3e,vivo X21等手机厂商也纷纷推出自己的刘海屏手机,我们先预览下HUAWEI nova 3e的机照 从这张图中我们可以看出,所 ...

  8. Android P刘海屏适配介绍

    1. 背景   Apple一直在引领设计的潮流,自从iPhone X发布之后,刘海屏就一直存在争议.不过不管你怎样,Android也要跻入"刘海屏"的行列,Android P预览版 ...

  9. h5 iOS 刘海屏适配

    之前做app内嵌页时,按照机型做了齐刘海适配,到现在iPhone12发布后,发现ios 齐刘海机型很多,所以按照机型适配有点繁琐,统一修改如下. 先看一下各个机型以及分辨率:https://www.t ...

最新文章

  1. sudo 密码超时时间
  2. python 将counter 的结果转换为字典
  3. java socket 如何设置so_keepalive属性_socket通信的KeepAlive设定
  4. 亲测有用的markdown博客生成器
  5. 静态变数和非静态变数_统计资料:了解变数
  6. 坑爹BUG,没有详细的看还真看不出问题
  7. HM 内存池设计(2) HM6.0内存池设计
  8. 深度模型推理在腾讯游戏的应用与实践(王者荣耀、和平精英等均有应用)
  9. PX4位置估计源码分析
  10. 计算机 无法 访问共享网络打印机,共享打印机无法连接怎么办解决方案
  11. 程序员最喜欢的五大神器
  12. Lazy Binomial Heaps
  13. 新春将至,“牛”气冲天
  14. 如何通过划分VLAN,有效规划企业网ip地址!
  15. 二叉树的前序遍历(Java)
  16. 问卷调查样本量的确定方法
  17. 《Python编程 从入门到实践》简单读书笔记
  18. 自考计算机及应用什么顺序,我想在北京自考计算机及应用专科考过的前辈给我点经验?...
  19. 岭南师范学院专插本计算机,2020年岭南师范学院专插本招生计划出来了,共招250人...
  20. 男脸型测试配发型软件,男士测脸型配发型app 百度拍照测脸型

热门文章

  1. 饭谈:元宇宙时代到来,我们软件测试人员何去何从?
  2. 软件测试的生命周期及基本流程
  3. 微信公众号手机端PC端多客服系统
  4. (精华)2020年9月10日 LINQ框架 手写LINQ框架(一:LINQ的由来)
  5. 「面试」拿到B站的意向书
  6. Array常用方法(数组增加、数组删除、数组截取、数组查找、数组遍历)
  7. python小白遇到的问题及解决方案
  8. 软件这么多,我还是爱这款
  9. GWAS - plink介绍与安装(Mac)
  10. matlab计算纹波电压,Zeta电路的参数计算及仿真