前言UI适配 , 一直都是开发过程中极其恶心的问题 。不过一旦吃透适配的原理 , 这块“食之无味 , 弃之可惜”的鸡肋问题就可以迎刃而解 。比如前段时间 , 头条的解决方案...因为不让随意贴外链 , 这里就不贴了 , 不贴也没啥问题 , 很容易百度...
时间过了这么久 , 为啥单独搞了一篇关于UI适配的文章了?一是因为最近工作需求;二是在适配的过程中学到了一些其他布局的用法 , 所以算是一篇近期工作总结性质的文章 。
OK , 开整 。
一、为什么需要适配我们都知道由于Android手机分辨率碎片化及其严重 , 即使google推出了dp效果也同样不尽如人意 。那么咱们先来明确第一个问题:为什么dp效果并不好 。
提到dp , 咱们不得不提到几个公式:
- px = density * dp;
- density = dpi / 160;
- px = dp * (dpi / 160);
文章插图
说白了 , dpi就是手机斜边除以屏幕尺寸从上述的公式 , 我们可以看出 , dpi的本质和手机屏幕的物理宽高有着直接的关系 。
接下来我们看俩款手机:
1、屏幕分辨率:1920*1080 , 屏幕尺寸:5吋的话 , 那么dpi约为440 。
那么这种情况下1dp=2.75px 。2、屏幕分辨率:1920*1080 , 屏幕尺寸:6吋的话 , 那么dpi约为367 。
那么这种情况下1dp=2.3px 。【你真的了解android的屏幕适配吗?】因此我们可以看出来 , 对于不同的手机来说 , 如果它们的分辨率相同 , 但屏幕尺寸不同 。那么即使dp相同 , 真正到手机上去展示时仍然会出现问题 。
因此我们就需要进行适配…
二、百分比布局(ConstraintLayout)最初为了适配 , 各种以百分比为核心的适配思想层出不穷 。百分比布局的出现就是其中之一 。这次咱们通过ConstraintLayout来聊一聊百分比 。
ConstraintLayout , 可以通过各种约束关系将复杂的布局简单化 , 极大的降低layout的层级关系(减少UI绘制所带来的时间消耗) 。
ConstraintLayout同样拥有极强的百分比布局能力 。
比如:
- layout_constraintHorizontal_bias
- layout_constraintVertical_bias
简单来说现在的Buttom拥有父布局宽度30%的左边距还有一种有趣的方式 , 那就是使用Guideline , 比如这样:
<androidx.constraintlayout.widget.Guideline android:id="@+id/effect_guideline" android:layout_width="wrap_content" android:orientation="vertical" app:layout_constraintGuide_percent="0.66" android:layout_height="wrap_content" />
创建一个拥有左间距66%的Guideline有了Guideline我们可以随意基于这个约束进行布局 , 当然如果需要横向的Guideline , 只需要改android:orientation=""即可 。
当然还有:
- layout_constraintWidth_percent
- layout_constraintHeight_percent
注意android:layout_width、android:layout_height的优先级会高于它们俩 。尾声今天写聊的东西就这么多 , 应该很通俗易懂而且个人感觉比较有实战意义 。虽然内容有些少 , 哈哈 。
推荐阅读
- Redis中 Hash的原理你知道吗?
- 靠谱的淘宝返利平台有哪些 淘宝的返利网是真的吗
- 网红宏楠钓鱼时触电身亡 快手五道口宏楠死了是真的吗
- 办公室座位风水你知道多少
- 科勒马桶怎么样
- 金骏眉贮存方法介绍
- 双十一严禁刷单炒信虚假评价是真的吗,双十一严禁先提价后打折可以举报吗
- 复制粘贴,你只用Ctrl+C、Ctrl+V来实现? 复制和粘贴的快捷键
- 咖啡入门的这些最基本知识,你需要了解
- 红酒为什么需要醒酒?其实是为了你的安全