最后
下面是辛苦给大家整理的学习路线
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
(4)总之我拿到这个事件(苹果)会往我的孩子进行传递,我的孩子也可以往他的孩子进行传递和消费,这样转往下走,如果有一个孩子消费掉这个事件(吃掉苹果),那么该事件结束。如果孩子都不消费那么就会从最下面的孩子一层层传上来传到我手里进行处理。
(5)记住 分发 拦截 处理。任何孩子拿到该事件第一步就是往下面分发,如果中途有拦截那么久就自己处理,直到分到最底层就辈分最低的孩子,如果该事件就往上给父亲处理。
(1)dispatchTouchEvent(MotionEvent event)
决定touch事件是否派发。在View和Activity中都有这个方法。
(2)onTouchEvent(MotionEvent event)
如果返回true,则表示这个事件被消费掉,如果返回false则将事件向上一层父容器传递。
(3)onInterceptTouchEvent(MotionEvent ev)
是否拦截touch事件,如果拦截,则不传递事件到子View,否则事件继续传递给子View,所以这个接口只有ViewGroup的派生类才有,View是没有该接口的。
自定义ViewGroup,和View的子类,重写消息传递的几个方法:
public class TouchView extends View {
private static final String TAG = TouchView.class.getSimpleName();
public TouchView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG, “TouchView onTouchEvent action=” + event.getAction());
return true;
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
Log.d(TAG, “TouchView dispatchTouchEvent action=” + event.getAction());
return super.dispatchTouchEvent(event);
}
}
public class TouchViewGroup extends FrameLayout {
private static final String TAG = TouchView.class.getSimpleName();
public TouchViewGroup(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
Log.d(TAG, “TouchVIewGroup dispatchTouchEvent action=” + ev.getAction());
boolean dispatch = super.dispatchTouchEvent(ev);
return dispatch;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG, “TouchVIewGroup onTouchEvent action=” + event.getAction());
return super.onTouchEvent(event);
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = TouchView.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
Log.d(TAG, “MainActivity dispatchTouchEvent action=” + event.getAction());
return super.dispatchTouchEvent(event);
}
}
最后
分享一份NDK基础开发资料
分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!