-
事务处理安全性查看全部
-
SQLite特点查看全部
-
SQLite简介查看全部
-
实现步骤查看全部
-
ShardPerferences特点查看全部
-
四种数据存储方式查看全部
-
如图,给GestureOverlayView添加了样式。查看全部
-
如果觉得显示的手势的轨迹不好看,可以自定义轨迹的样式。 一些常见的XML属性设置: Android:eventInterceptionEnabled 定义当手势已经被识别出来时,是否拦截该手势动作 Android:fadeDuration 当用户画完的时候,手势效果淡出的时间 Android:fadeEnabled 用户画完之后,手势是否自动淡出 Android:gestureColor 手势的颜色 Android:gestureStrokeType 笔画的类型 Android:gestureStrokeWidth 笔画的粗细查看全部
-
给gestureOverlayView设置监听器: gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerformedListener(){}) 重写方法onGesturePerformed()。 如图,onGesturePerformed()的示例代码,也就是关于手势识别的代码实现。 ArrayList<Prediction>:预测集 predction.score:相似度,值越大,则越相似,也就是说你必须做出几乎一模一样的手势才能通过识别。相似度的取值范围一般是0.0~10.0,取10.0就已经太夸张了,因为很难做出非常接近的手势。所以,这里的下限只取5.0: predction.score>=5.0查看全部
-
在 MainActivity 中的代码实现查看全部
-
使用GestureOverlayView进行手势识别的步骤: 1. 使用Gesture Builder生成手势文件 2. 将文件加入到项目 3. 在项目中创建 GestureOverlayView,将它放置在想要识别手势的控件上,或者把它包裹起来。 只能识别文件中存在的手势,如果不是文件中存在的手势,就无法识别。 --------------- 在res文件夹下创建文件夹raw,把手势文件gesture添加到这里。 GestureOverlayView 一种用于手势输入的透明覆盖层,可覆盖在其他控件的上方,也可以包含其他控件。存在3个监听接口: GestureOverlayView.OnGestureListener // 手势监听器 GestureOverlayView.OnGesturePerformedListener // 手势执行监听器 GestureOverlayView.OnGesturingListener // 手势执行中监听器 ------------------ 如图使用GestureOverlayView控件去包含ImageView控件。 可识别手势的区域大小不是由ImageView决定,而是由GestureOverlayView决定。 ------------------------ 补充: 使用Android Studio则更加简单,不用去创建 Simple Project。老师之所以要创建Simple Project,是因为模拟器中没有Gesture Builder这种应用,所以要自己创建。而Android Studio的模拟器是有Gesture Builder的,所以我们可以直接进入模拟器,点击Gesture Builder图标,进行手势的创建。查看全部
-
高版本的 API 可能还是会出现滑动没有反应的现象,主要有两点需要注意: 1. 给 ImageView 对象添加一句:imageView.setLongClickable(true); 2. 初始化myGestureDetector不要只传一个参数,至少要两个参数: myGestureDetector = new GestureDetector(this,new myGestureListener());查看全部
-
如图,是继承 SimpleOnGestureListener之后,重写的 onFling()代码,onFling():针对滑动事件的处理。 其中,e1表示起始事件,e2表示末尾事件,每个事件都含有坐标属性。通过起止事件的相对位置,可以判断是从左往右滑动还是从右往左滑动。 代码: class myGestureListener extends SimpleOnGestureListener{ @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if(e1.getX()-e2.getX()>50){ Toast.makeText(MainActivity.this, "从右往左滑动", Toast.LENGTH_SHORT).show(); } else if (e2.getX()-e1.getX()>50){ Toast.makeText(MainActivity.this, "从左往右滑动", Toast.LENGTH_SHORT).show(); } return super.onFling(e1, e2, velocityX, velocityY); } } 那么,如何将事件 MotionEvent 传入上面的监听器呢?需要使用GestureDetector。 定义全局变量 GestureDetector myGestureDetector; 在 onCreate()中初始化 myGestureDetector: myGestureDetector = new GestureDetector(this,new myGestureListener()); // 初始化:探测器和监听器绑定在一起。 这样一来,事件将会传到监听器myGestureListener()。 之后给 imageView 设置监听事件,监听事件的 onTouch()方法里面添加一句话即可: myGestureDetector.onTouchEvent(motionEvent); // 发送事件查看全部
-
OnGestureListener接口的6个方法: 单击:onDown(MotionEvent e) 抬起:onSingleTapUp(MotionEvent e) 短按:onShowPress(MotionEvent e) 长按:onLongPress(MotionEvent e) 滚动:onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float disanceY) 滑动:onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) (注解:velocity:速率,速度) OnDoubleTapListener接口的3个方法: 双击:onDoubleTap(MotionEvent e) 双击按下和抬起各触发一次:onDoubleTapEvent(MotionEvent e) 单击确认:onSingleTapConfirmed(MotionEvent e)就是很快地按下并抬起,但不连续点击第二下。 如果分别去实现这两个接口的所有方法,未免太麻烦了,所以这里提供了另一个接口:SimpleOnGestureListener,它已经继承了前面所讲的两个监听器。 - 继承SimpleOnGestureListener - 重载感兴趣的手势查看全部
-
手势识别 可以通过以下两种方式实现: 1. 使用GestureDetector 2. 使用GestureOverlayView(属于线程的控件) 手势交互过程(原理): 1. 触屏一刹那,触发 MotionEvent 事件; 2. 被 OnTouchListener 监听,在 onTouch()中获得 MotionEvent对象; 3. GestureDetector 转发 MotionEvent 对象至 OnGestureListener; 4. OnGestureListener 获取该对象,根据该对象封装的信息做出合适的反馈; MotionEvent: 1. 用于封装手势、触摸笔、轨迹球等动作事件; 2. 内部封装用于记录横轴和纵轴坐标的属性X和Y。 GestureDetector: 识别各种手势。 OnGestureListener: 1. 手势交互的监听接口,其提供多个抽象方法; 2. 根据 GestureDetector 的手势识别结果,调用相应的方法。 GestureDetector 详解: 触摸屏:按下、移动、抬起等。 监听触摸事件:重载 onTouch 或者设置 setOnTouchListener GestureDetector 工作原理: 1. 当接收到用户触摸消息时,将消息交给 GestureDetector加工; 2. 通过设置监听器获得 GestureDetector 处理后的手势。 GestureDetector提供两个监听器: 1. OnGestureListener:处理单击类消息 2. OnDoubleTapListener:处理双击类消息查看全部
举报
0/150
提交
取消