最后
针对Android程序员,我这边给大家整理了一些资料,包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
-
Android前沿技术大纲
-
全套体系化高级架构视频
Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、混合式开发(ReactNative+Weex)全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
android:text=“按钮1”
android:textSize=“26sp”/>
一目了然,相当于文字的基线是对齐了的.如果没有加layout_constraintBaseline_toBaselineOf
属性,那么是下面这样的:
二、与父亲边缘对齐
当需要子view放在父view的底部或者最右侧时. 我们使用:
<android.support.constraint.ConstraintLayout
app:layout_constraintEnd_toEndOf=“parent”>
</android.support.constraint.ConstraintLayout>
app:layout_constraintBottom_toBottomOf=“parent” 我的底部与父亲底部对齐
app:layout_constraintTop_toTopOf=“parent” 我的顶部与父亲的顶部对齐
app:layout_constraintLeft_toLeftOf=“parent” 我的左侧与父亲的左侧对齐
app:layout_constraintRight_toRightOf=“parent” 我的右侧与父亲的右侧对齐
三、居中对齐
下面的TextView,与父亲左侧对齐,与父亲右侧对齐,所以,最右,它水平居中对齐.
可能你也想到了,居中对齐其实就是2个对齐方式相结合.最后产生的效果. 比如:
这是垂直居中
app:layout_constraintTop_toTopOf=“parent”
app:layout_constraintBottom_toBottomOf=“parent”
位于父亲的正中央
app:layout_constraintBottom_toBottomOf=“parent”
app:layout_constraintLeft_toLeftOf=“parent”
app:layout_constraintRight_toRightOf=“parent”
app:layout_constraintTop_toTopOf=“parent”
四、边距
边距和原来是一样的.
android:layout_marginStart
android:layout_marginEnd
android:layout_marginLeft
android:layout_marginTop
android:layout_marginRight
android:layout_marginBottom
举个例子:
效果如下:
Bias(偏向某一边)
上面的水平居中,是使用的与父亲左侧对齐+与父亲右侧对齐. 可以理解为左右的有一种约束力,默认情况下,左右的力度是一样大的,那么view就居中了.
当左侧的力度大一些时,view就会偏向左侧.就像下面这样.
当我们需要改变这种约束力的时候,需要用到如下属性:
layout_constraintHorizontal_bias 水平约束力
layout_constraintVertical_bias 垂直约束力
来举个例子:
<android.support.constraint.ConstraintLayout
</android.support.constraint.ConstraintLayout>
可以看到,左右有2根约束线.左侧短一些.那么就偏向于左侧
这里推荐腾讯课堂的一个官方qq群:Android IOC架构设计,上面那些高阶安卓资料就是群里找的,我一直混迹其中跟行业大佬学习交流,顺便蹭一些一线大厂面试资料和学习提升的视频。
五、Circular positioning (Added in 1.1)
翻译为:圆形的定位 ?
这个就比较牛逼了,可以以角度和距离约束某个view中心相对于另一个view的中心,
可能比较抽象,来看看谷歌画的图:
他的属性有:
layout_constraintCircle :引用另一个小部件ID
layout_constraintCircleRadius :到其他小部件中心的距离
layout_constraintCircleAngle :小部件应该处于哪个角度(以度为单位,从0到360)
举个例子:
六、Visibility behavior 可见性行为
当一个View在ConstraintLayout中被设置为gone,那么你可以把它当做一个点(这个view所有的margin都将失效). 这个点是假设是实际存在的.
举个例子:
可以看到,按钮3和按钮1中间的margin只有20.
再举个例子:
我将按钮3放到按钮2的右侧,这时是没有给按钮2加android:visibility="gone"
的.
现在我们来给按钮2加上android:visibility="gone"
这时,按钮2相当于缩小成一个点,那么按钮3还是在他的右侧不离不弃.
七、Dimensions constraints 尺寸限制
在ConstraintLayout中,可以给一个view设置最小和最大尺寸.
属性如下(这些属性只有在给出的宽度或高度为wrap_content时才会生效):
android:minWidth 设置布局的最小宽度
android:minHeight 设置布局的最小高度
android:maxWidth 设置布局的最大宽度
android:maxHeight 设置布局的最大高度
八、Widgets dimension constraints 宽高约束
平时我们使用android:layout_width和 android:layout_height
来指定view的宽和高.
在ConstraintLayout中也是一样,只不过多了一个0dp.
- 使用长度,例如
- 使用wrap_content,view计算自己的大小
- 使用0dp,相当于“ MATCH_CONSTRAINT”
下面是例子
展示出来的是:
九、WRAP_CONTENT:强制约束(在1.1中添加)
当一个view的宽或高,设置成wrap_content时,如果里面的内容实在特别宽的时候,他的约束会出现问题.我们来看一个小栗子:
从右侧的图片可以看出,按钮2里面的内容确实是在按钮1的内容的右侧.但是按钮2整个来说,却是没有整个的在按钮1的右侧.
这时需要用到下面2个属性
app:layout_constrainedWidth=”true|false”
app:layout_constrainedHeight=”true|false”
给按钮2加一个app:layout_constrainedWidth="true"
,来看效果:
哈哈,又看到了我们想要的效果.爽歪歪.
十、MATCH_CONSTRAINT尺寸(在1.1中添加)
当一个view的长宽设置为MATCH_CONSTRAINT(即0dp)时,默认是使该view占用所有的可用的空间. 这里有几个额外的属性
layout_constraintWidth_min和layout_constraintHeight_min:将设置此维度的最小大小
layout_constraintWidth_max和layout_constraintHeight_max:将设置此维度的最大大小
layout_constraintWidth_percent和layout_constraintHeight_percent:将此维度的大小设置为父级的百分比
这里简单举个百分比的例子:居中并且view的宽是父亲的一半
It’s so easy! 这极大的减少了我们的工作量.
注意
- 百分比布局是必须和MATCH_CONSTRAINT(0dp)一起使用
layout_constraintWidth_percent 或layout_constraintHeight_percent
属性设置为0到1之间的值
十一、按比例设置宽高(Ratio)
可以设置View的宽高比例,需要将至少一个约束维度设置为0dp(即MATCH_CONSTRAINT
),再设置layout_constraintDimensionRatio
.
举例子:
该比率可表示为:
- 浮点值,表示宽度和高度之间的比率
- “宽度:高度”形式的比率
如果两个尺寸都设置为MATCH_CONSTRAINT(0dp),也可以使用比率。在这种情况下,系统设置满足所有约束的最大尺寸并保持指定的纵横比。要根据另一个特定边的尺寸限制一个特定边,可以预先附加W,“或” H,分别约束宽度或高度。例如,如果一个尺寸受两个目标约束(例如,宽度为0dp且以父节点为中心),则可以指示应该约束哪一边,通过 在比率前添加字母W(用于约束宽度)或H(用于约束高度),用逗号分隔:
上面的代码将按照16:9的比例设置按钮的高度,而按钮的宽度将匹配父项的约束。
十二、Chains(链)
设置属性layout_constraintHorizontal_chainStyle或layout_constraintVertical_chainStyle链的第一个元素时,链的行为将根据指定的样式(默认值CHAIN_SPREAD)更改。
- CHAIN_SPREAD - 元素将展开(默认样式)
- 加权链接CHAIN_SPREAD模式,如果设置了一些小部件MATCH_CONSTRAINT,它们将分割可用空间
- CHAIN_SPREAD_INSIDE - 类似,但链的端点不会分散
- CHAIN_PACKED - 链条的元素将被包装在一起。然后,子项的水平或垂直偏差属性将影响打包元素的定位
下面是一个类似LinearLayout的weight的效果,需要用到layout_constraintHorizontal_weight
属性:
例子的效果图如下:
最后是今天给大家分享的一些独家干货:
【Android开发核心知识点笔记】
【Android思维脑图(技能树)】
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
【Android高级架构视频学习资源】
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
大家分享的一些独家干货:
【Android开发核心知识点笔记】
[外链图片转存中…(img-RPI2hbJa-1715822361325)]
【Android思维脑图(技能树)】
[外链图片转存中…(img-LG9agTp3-1715822361326)]
【Android核心高级技术PDF文档,BAT大厂面试真题解析】
[外链图片转存中…(img-fdLzvzQp-1715822361326)]
【Android高级架构视频学习资源】
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!