我用ConstraintLayout写了个登录页面,原来是那么的好用,你开始用了吗?

ConstraintLayout布局目前网上也传了很多的资料,也写过不少的文章大家应该都看过。这次我就用个真是的按钮来实现这个布局,登录界面大家应该接触很多,写登录界面的布局方式也很多,只要是安卓提供的布局都可以完成登录界面,但是性能可能是没有ConstraintLayout好,毕竟是google为了解决布局性能而出的一个布局。

我用ConstraintLayout写了个登录页面,原来是那么的好用

图1 ConstraintLayout布局案例

登录界面简单介绍

一个公司的APP产品少不了登录界面,登录界面是一个APP最基本的页面,上图的界面也很简单,从头到位也就是一些基础控件完成,大家可以看看图2代码结构,这个结构就是眼前登录界面的全部了,外层就是ConstraintLayout一层。而内部也就是一些基础控件,不再像之前还要添加各种布局来完成这个界面,其实有人觉得用RelativeLayout也能完成这个界面,其实RelativeLayout完成也是可以,但是性能没有这个好,还有就是ConstraintLayout可以支持百分比。

我用ConstraintLayout写了个登录页面,原来是那么的好用

图2登录页面的布局结构

ConstraintLayout和RelativeLayout对比

第一:意图ConstraintLayout是通过对每个视图应用一些规则来优化和展平布局的视图层次结构,以避免嵌套。规则提醒您RelativeLayout,例如将左侧设置为其他视图的左侧。

app:layout_constraintBottom_toBottomOf="@+id/view1"

与之不同的是RelativeLayout,ConstraintLayout提供bias用于相对于手柄以0%和100%水平和垂直偏移定位视图的值(用圆圈标记)。这些百分比(和分数)提供了跨不同屏幕密度和大小的视图的无缝定位。

app:layout_constraintHorizontal_bias="0.33" <!-- from 0.0 to 1.0 -->
app:layout_constraintVertical_bias="0.53" <!-- from 0.0 to 1.0 -->

基线手柄(带圆角的长管,圆形手柄下方)用于将视图的内容与另一个视图参考对齐。

方形手柄(在视图的每个角上)用于调整dps中的视图大小。

我用ConstraintLayout写了个登录页面,原来是那么的好用

第二:RelativeLayout是一种双向布局。它必须至少测量/布局两次。ConstraintLayout不会遭受此性能损失。

第三:非常强大的用途是通过形成链来对元素进行分组。通过这种方式,我们可以形成一组视图,这些视图作为一个整体可以以期望的方式放置而不添加另一层次的层次结构以形成另一组视图。

第四:除了重量,我们可以应用水平和垂直偏差,这只是从中心位移的百分比。(0.5的偏差意味着居中对齐。任何小于或等于的值意味着在相应方向上的相应移动)。

第五:另一个非常重要的特性是它尊重并提供处理GONE视图的功能,这样如果某些视图通过java代码设置为GONE,布局就不会中断。

一个很大的区别是,即使视图消失,ConstraintLayout也会尊重约束。因此,如果您有一个链并且您想让视图在中间消失,它将不会破坏布局。

所以ConstraintLayout好处多的去了,而且用起来也很简单。同时也支持界面拖拉,但是我还是建议大家不要太依赖工具,能动手写的就用手写xml方便以后维护。

猜你喜欢

转载自blog.csdn.net/kaixing20/article/details/88224643