最后
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。希望能够帮助到大家提升技术
高级UI,自定义View
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。
不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- ACTION_UP:手指在屏幕上松开的瞬间
(2)TouchSlop
是一个常量,当滑动的值小于这个常量的时候,是不认为在滑动获取的方法是:ViewConfiguration.get(getContext()).getScaledTouchSlop();
3.VelocotyTracker、GestureDetector
(1)VelocotyTracker作用是追踪手指的滑动速度,在获取速度之前要调用一个方法,computeCurrentVelocity();然后再调用getXVelocity()和getYVelocity()这两个方法获取速度。
(2)GestureDetector用于辅助检测用户的单击、滑动、长按、双击等行为,创建GestureDetector对象,实现OnGestureListener接口监听双击行为使用。
二.View的事件分发机制
1.点击事件的传递规则
主要有三个方法:
(1)public boolean dispatchTouchEvent(MotionEvent ev)
用来事件的分发,如果事件能够传递给当前的View,那么此方法一定会被调用,返回的结果受到当前View的onTouchEvent和下级的dispatchTouchEvent方法的影响。
(2)public boolean onInterceptTouchEvent(MotionEvent ev)
是在上述方法的内部调用,用来判断是否拦截某个事件,如果View拦截了某个事件,那么在同一个事件的序列当中,此方法不会再被调用,返回结果表示是否拦截当前事件。
(3)public boolean onTouchEvent(MotionEvent event)
在dispatchTouchEvent方法中调用,用来处理点击的事件,返回结果是否消耗当前事件,如果不消耗,如果不消耗,则在同一个事件的序列中,当前View无法再次接收到事件。
(上述三个方法的关系,可以使用一段伪代码很好的诠释三个方法的关系)
/**
-
点击事件产生后,首先传递给本View的dispatchTouchEvent方法被调用,
-
@param ev
-
@return
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
boolean isDispatch = false;
/**
-
1.如果onInterceptTouchEvent(ev) ==true,那么表示拦截当前事件,交给本View的
-
onTouchEvent(ev)方法被调用
-
2.如果onInterceptTouchEvent(ev) ==false,那么表示不拦截当前事件,交给子元素,
-
接着子元素的dispatchTouchEvent(ev)被调用,
-
(然后反复直到此事件被处理掉)
*/
if (onInterceptTouchEvent(ev)){
isDispatch = onTouchEvent(ev);
}else{
//子元素的dispatchTouchEvent()方法被调用
最后
写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个学习思路及方向,从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
8156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!