初识View-FIVE
来源:互联网 发布:谈大数据的重要性 编辑:程序博客网 时间:2024/04/30 00:34
开篇短叙
做开发很久了,却一直没有真正的去面对自定义View这一块蛋糕。平时,在github或者博客上自学了很多这方面的知识,但是一直不是很系统,总是在真正使用的时候发现,自己在这方面的知识储备显得-很“笨拙”,只能应对一些简单的!!借着最近项目不紧张,再次进行View的系统学习,并在这里记录一下自己的学习过程。
摘要
- GestureDetector
- 事件分发机制 Dispatch
GestureDetectorpublic class GestureDetector extends Object java.lang.Object ↳ android.view.GestureDetector
GestureDetector 的使用
- 对于如何使用 GestureDetector ?
- 比如通过 GestureDetector的一个静态内部类 SimpleOnGestureListener实现一个简单的手势功能:双击”666”,此功能是对某控件 targetView 双击操作!
// 第一步.创建一个监听器的内部类作为操作的回调;就是监听用户进行手势之后的操作结果响应。SimpleOnGestureListener listener = new SimpleOnGestureListener() { @Override public boolean onDoubleTap(MotionEvent e) { Toast.makeText(MainActivity.this, "双击666", Toast.LENGTH_SHORT).show(); return super.onDoubleTap(e); }};// 第二步.创建手势监听器对象,传入监听器的一个内部类对象,该内部类实现的是操作回调。//构造方法:GestureDetector(Context context, GestureDetector.OnGestureListener listener)final GestureDetector gestureDetector= new GestureDetector(this, listener);// 第三步.通过手势检测对象,给监听器设置数据源。targetView .setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { //这一行代码是起到一个关键作用的,决定是否执行手势操作。 //最后的OnTouchEvent 事件交给手势监听器 return gestureDetector.onTouchEvent(event); }});
手指在手机屏幕上左右滑动,再比如,在一个普通的Activity页面进行操作。
@Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP){ int count = event.getPointerCount() ; float x1 = event.getX(0) ; float x2 = event.getX(count - 1); float scrollDistance = x1 - x2; if (scrollDistance > 100){ Logger.d("向左滑--->>"); }else if (scrollDistance<-100){ Logger.d("向右滑--->>"); }else { } } //最后的OnTouchEvent 事件交给手势监听器 return gestureDetector.onTouchEvent(event); }
- 总结:
- step 1.定义我们的手势监听器,并实现监听接口。
step 2.实现监听接口中的方法。
step 3.最后将OnTouchEvent 事件交给手势监听器gestureDetector
处理。
事件分发机制 整理
展示一下我们平时写代码布局时,这些布局都处在布局结构中的什么位置:
<com.ztman.cusview.customView.RootView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <com.ztman.cusview.customView.GroupA android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#ff88aa"> <View1 android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="15dp" android:background="#aa88ee" android:text="View1" /> </com.ztman.cusview.customView.GroupA> <View2 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="View2" android:textColor="#ff88aa" /></com.ztman.cusview.customView.RootView>
当我们点击屏幕上的view,事件传递又是怎么进行的
- ViewGroup 想把传递进来的事件分发给自己的 onTouchEvent,需要通过拦截器onInterceptTouchEvent 方法 return true 把事件拦截下来;
阅读全文
0 0
- 初识View-FIVE
- Five
- five
- android 自定义view 初识
- 初识Container View Controller
- 初识自定义view<一>
- android初识自定义view
- 自定义View 初识( 一)
- Android自定义View初识
- 初识View-ONE
- 初识View-TWO
- 初识View-THREE
- 初识View-FOUR
- 初识View-SIX
- 初识自定义View-View的弹性滑动
- 自定义View(一) 初识自定义view
- 自定义View(一)之初识自定义View
- 初识自定义View(一)
- OpenCV Mac 版 trackBar 不能显示数值,是否有解决办法?
- 一些名字的缩写
- 【jQuery】jQuery 选择器
- java基础-hashCode与equals的区别与联系
- 如何评价VS Code中的Monaco编辑器?
- 初识View-FIVE
- 用R语言做自己的微信聊天记录词云
- 【jQuery】jQuery 事件
- python相关
- java阿里云oss断点续传获取上传进度
- 欢迎使用CSDN-markdown编辑器
- 【jQuery】jQuery 效果- 隐藏和显示
- Redis集群部署
- 【jQuery】jQuery 效果