总结
其实要轻松掌握很简单,要点就两个:
- 找到一套好的视频资料,紧跟大牛梳理好的知识框架进行学习。
- 多练。 (视频优势是互动感强,容易集中注意力)
你不需要是天才,也不需要具备强悍的天赋,只要做到这两点,短期内成功的概率是非常高的。
对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。下面资料部分截图是我花费几个月时间整理的,诚意满满:特别适合有3-5年开发经验的Android程序员们学习。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
android:id=“@+id/vStartStatus”
android:layout_width=“50dp”
android:layout_height=“50dp”
android:background=“@color/colorPrimary” />
</androidx.constraintlayout.motion.widget.MotionLayout>
2.将activity_motion_scene.xml
文件中Constraint
标签的id
值修改成正方形的id
,即vStartStatus
。Constraint
标签的id
属性值需要与要起动画效果的View
的id
保持一致,这样Constraint
标签的所有属性都会作用于该View
。Constraint
标签的属性与ConstraintLayout
的属性是一致的,为此,给正方形开始状态增加一些属性,使其位置水平居中,距离顶部50dp
。
因为id
为start
的ConstraintSet
标签关联到Transition
标签的constraintSetStart
属性,所以它作为动画(目前只有一个动画)的起始状态。而id
为end
的ConstraintSet
标签关联到Transition
标签的constraintSetEnd
属性,所以它将作为动画的结束状态。结束状态我们将正方形设置水平居中,距离底部50dp
。
设置Constraint
标签时记得设置layout_width
与layout_height
,不然是看不到正方形的。
- 到这一步,
Transition
标签已经拥有开始和结束状态了,就差触发动画开始的操作了。给Transition
标签增加onClick
子标签,表示点击触发动画。onClick
标签增加clickAction
属性,值为toggle
,表示重复点击时,动画循环效果;增加targetId
属性,值为@id/vStartStatus
,表示点击正方形视图触发过渡动画。
此时activity_motion_scene.xml
看起来是这样子的。
效果图
OK,看到这里,你应该可以创建个类似的MotionLayout动画。还不行的话,需要回头再看看。
下面讲介绍一些标签的属性与效果。
标签与属性
Transition标签
Transition
标签主要用来指定Motion场景中一个或多个动画。即关联到动画对应的各种状态和用户交互动作。和过渡动画是大同小异的。
常用属性:
constraintSetStart
:指定动画初始状态;
constraintSetEnd
:指定动画结束状态;
duration
:指定动画时长;
autoTransiton
:是否自动开启动画。取值有:animateToStart
过渡到初始状态、animateToEnd
过渡到结束状态、jumpToEnd
跳到结束状态、jumpToStart
跳到初始状态、none
不开始状态。默认情况下是none
,当设为其他值时,不用和用户交互即自动开启动画。
motionInterpolator
:插值器。取值有:linear
线性、bounce
弹簧、easeIn
淡入、easeOut
淡出、easeInOut
淡入淡出;
transitionDisable
:允许动画功能。取值:false
和true
;
layoutDuringTransition
:动画过程中,MotionLayout
子View
调用reqeustLayout
,是否做出响应。取值honorRequest
响应、ignoreRequest
忽略;(beta 4)
1、用户交互的子标签
Transition
标签通过一些子标签,实现与用户交互的行为。例如上文的OnClick
子标签表示用户的点击行为。
OnClick
标签:点击场景中某个视图,开始动画效果。
OnSwipe
标签:表示在布局上滑动时要执行的操作。由于个人能力有限,一些属性不能准备表达。
2、关键帧子标签
在上文中,默认情况下过渡动画Transition
标签会关联一个开始状态和一个结束状态的TransitionSet
标签。但我们知道Transition
标签不仅可以创建初始状态和结束状态,还可以创建中间状态。这些中间状态则由关键帧来构成,以实现更复杂的动画效果。
KeyFrameSet
标签:用来指定某个中间状态的位置和属性。其实和过渡动画的关键帧是一样的概念。KeyFrameSet
标签含有KeyPosition
和KeyAttribute
两个子标签,这些共同构成过渡动画过程中某特殊状态的位置和属性。
位置关键帧
KeyPosition
标签: 用来定义整个运动动画中某个状态的位置,相比于静态的TransitionSet
标签来说,更加灵活。
重点属性解释:
framePosition
:当前关键帧的位置,把整个运动动画分成100个位置,取值0到99,那么初始状态的位置就是0,结束状态就是99。
keyPositionType
:参考坐标系的选择,决定了percentX
和percentY
属性取值的结果。
取值:parentRelative
表示坐标系基于父视图。例如在开头的demo,加上下面的关键帧:
代码定义了运动动画过程的中间位置framePosition="50"
,参考系选择了相对父视图坐标keyPositionType="parentRelative"
。由于父视图是全屏,所以坐标系原点在屏幕的左上角,percentY="0.5"
和percentX="0.25"
则表示正方形在父视图高度的1/2,宽度1/4的位置。
效果图
将keyPositionType
属性改为deltaRelative
,即坐标系选择参照整个过渡动画的位置,那么起始状态的位置就是原点(0,0),结束状态的位置就是终点(1,1)。 这里由于原点和终点在x轴上的距离是0,所以percentX="0.25"
是没有效果的。
效果图:
将keyPositionType
属性改为pathRelative
,即坐标系选择参照整个运动路径,即起始和终点的直线距离构成X轴,此时y轴就有正负之分,表示在X轴的左边还是右边。x轴和y轴的长度都是等于路径的长度。
例如代码如下:
效果图:
代码如下,percentY
改为-1
:
效果图:
更多Android高级工程师进阶学习资料
进阶学习视频
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
、面试题集合/面经、及系列技术文章等,资源持续更新中…**
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!