提示:以下是本篇文章正文内容
=================================================================
帧动画、补间动画、属性动画
可以将动画组合在一起使用AnimatorSet,
AnimatorSet.play() 播放当前动画的同时可以
-
.with() :将现有动画和传入的动画同时执行
-
.after() :将现有动画插入到传入的动画之后执行
-
.before() : 将现有动画插入到传入的动画之前执行
-
AccelerateDecelerateInterpolator :在动画开始与结束的地方速率改变比较慢,在中间的时候加速
-
AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始速率变化加快
-
LinearInterpolator:以常量速率改变
-
AnticipateInterpolator:开始的时候向后然后向前甩
-
PathInterpolator:动画执行的效果按贝塞尔曲线
-
anticipateOvershootInterpolator:开始的时候向后然后向前甩一定值后返回最后的值
-
CycleInterpolator:动画循环播放特定的次数,速率改变沿着正弦曲线
-
OvershootInterpolator:向前甩一定值后再回到原来位置
-
BounceInterpolator:动画结束的时候有弹起效果
写一个类实现Interpolator接口,
Interpolator是一个空的接口继承了TimeInterpolator接口,
定义getInterpolation方法即可
可以通过两种方式,一是通过定义 Activity 的主题,二是通过覆写 Activity 的overridePendingTransition 方法。
===================================================================
Handler能充当子线程和主线程之间的桥梁。
通常将 Handler 声明在 Activity 中,然后覆写 Handler 中的 handleMessage 方法,当子线程调用 handler.sendMessage()方法后 handleMessage 方法就会在主线程中执行。
这里面除了 Handler、Message 外还有隐藏的 Looper 和 MessageQueue 对象。在主线程中 Android 默认已经调用了 Looper.preper()方法,调用该方法的目的是在 Looper 中
创建 MessageQueue 成员变量并把 Looper 对象绑定到当前线程中。当调用 Handler 的sendMessage(对象)方法的时候就将 Message 对象添加到了 Looper 创建的 MessageQueue队列中,同时给 Message 指定了 target 对象,其实这个 target 对象就是 Handler 对象。主线程默认执行了 Looper.looper()方法,该方法从 Looper 的成员变量 MessageQueue 中取出 Message。
然后调用 Message 的 target 对象的 handleMessage()方法。这样就完成了整个消息机制。
2、onTouch 和 onTouchEvent 有什么区别
这两个方法都是在 View 的 dispatchTouchEvent 中调用的,onTouch 优先于 onTouchEvent执行。如果在 onTouch 方法中通过返回 true 将事件消费掉,onTouchEvent 将不会再执行。
另外需要注意的是,onTouch 能够得到执行需要两个前提条件,第一 mOnTouchListener 的值不能为空,第二当前点击的控件必须是 enable 的。因此如果你有一个控件是非 enable 的,那么给它注册 onTouch 事件将永远得不到执行。对于这一类控件,如果我们想要监听它的 touch 事件,就必须通过在该控件中重写 onTouchEvent 方法来实现。
不能,如果在子线程中直接 new Handler()会抛出异常
当我们在dao主线程中创建Handler对象的时制候没有问题,是因为主线程会自动调用Looper.prepare()方法去给当前主线程创建并设置一个Looper对象,随意在Handler构造函数中从当前线程的对象身上拿到这个Looper。
但是子线程中并不会自动调用这个方法,所以要想在子线程中创建Handler对象就必须在创建之前手动调用Looper.prepare()方法,否则就会报错。
4、子线程发消息到主线程进行更新 UI,除了 handler 和 AsyncTask,还有什么?
1、用 Activity 对象的 runOnUiThread 方法更新,在子线程中通过 runOnUiThread()方法更新 UI:
先自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以扫码领取!!!!
![](https://img-blog.csdnimg.cn/img_convert/ac45256ca150617578a68d3f2b8be8b6.jpeg)
最后
跳槽季整理面试题已经成了我多年的习惯!在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。
附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题(含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可免费领取!
)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)
[外链图片转存中…(img-TA8E0LRx-1711287022863)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》,点击传送门,即可免费领取!