一、View基础知识

主要介绍内容有:View的位置参数、MotionEvent和TouchSlope对象、VelocityTracker、GestureDetector和Scroller对象

1、什么是View

  • View是Android中所有控件的基类
  • View是一种界面层的控件的一种抽象,它代表了一个控件。

    2、View的位置参数

  • 四个属性
    • top 左上角纵坐标 getRight()
    • left 左横 getLeft()
    • right 右横 getRight()
    • bottom 右纵 getBottom()
  • 额外的几个参数
    • x View左上角的坐标
    • y
    • translationX 相对父容器的偏移量
    • translationY
  • 使用注意
    • View在平移的过程中,top和left表示的是原始左上角的位置信息,其值并不会发生改变,此时改变的是x,y,translationX和translationY

      3、MotionEvent & TouchSlop

  • MotionEvent
    • 典型的事件类型有

      • ACTION_DOWN 手指刚接触屏幕
      • ACTION_MOVE 手指在屏幕上移动
      • ACTION_UP 手指从屏幕上松开的一瞬间
    • getX/getY
      • 返回的是当前View左上角的坐标
    • getRawX/getRawY
      • 返回的是相对于手机屏幕上的坐标
  • TouchSlop
    • 概念

      • 是系统所能识别出的被认为是滑动的最小距离 是一个常量,和设备有关
    • 获取
      • ViewConfiguration.get(getContext()).getScaledTouchSlop();
    • 源码位置
      • frameworks/base/core/res/res/values/config.xml

        4、VelocityTracker & GestureDetector & Scroller

  • VelocityTracker(速度追踪)
    • 用于追踪手指在滑动过程中的速度,包括水平和竖直方向的速度
    • 使用过程
      1. 在view的onTouchEvent方法中追踪当前单击事件的速度
        VelocityTracker velocityTracker = VelocityTracker.obtain();
        velocityTracker.addMovement(event);
      2. 获取当前速度
        VelocityTracker.computeCurrentVelocity(1000);
        int xVelocity = (int)velocityTracker.getXVelocity();
        int yVelocity = (int) velocityTracker.getYVelocity();
      3. 不用时,重置并回收内存
        velocityTracker.clear();
        velocityTracker.recycle();
  • GestureDetector(手势检测)
    • 用于检测用户的单击、滑动、长按、双击等行为
    • 如何使用?
      1. 创建一个GestureDetector对象并实现OnGestureListener接口
      2. 接管目标View的onTouchEvent方法
      3. 有选择的自行选择 实现OnGestureListener 和 OnDoubleTapListener中的方法
    • 常用方法
      • onSingleTapUp(单击)
      • onFling(快速滑动)
      • onScroll(推动)
      • onLongPress(长按)
      • onDoubleTap(双击)
  • Scroller(弹性滑动对象)
    • 需要和View的computeScroll方法配合使用
    • 固定代码

Android开发艺术探索(三)——View的事件体系的更多相关文章

  1. Android开发艺术探索笔记——View(二)

    Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...

  2. Android开发艺术探索笔记—— View(一)

    Android开发艺术探索笔记 --View(一) View的基础知识 什么是View View是Android中所有控件的基类.是一种界面层控件的抽象. View的位置参数 参数名 获取方式 含义 ...

  3. 《android开发艺术探索》读书笔记(四)--View工作原理

    接上篇<android开发艺术探索>读书笔记(三) No1: View的三大流程:测量流程.布局流程.绘制流程 No2: ViewRoot对应于ViewRootImpl类,它是连接Wind ...

  4. 《android开发艺术探索》读书笔记(三)--分发机制和滑动冲突

    接上篇<android开发艺术探索>读书笔记(二) No1: 通过MotionEvent对象可以得到点击事件发生的x和y坐标,getX/getY返回的是相对于当前View左上角的x和y坐标 ...

  5. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  6. 《android开发艺术探索》读书笔记(八)--WindowManager

    接上篇<android开发艺术探索>读书笔记(七)--动画 No1: Window是一个抽象类,它的具体实现是PhoneWindow.创建一个Window是很简单的事,只需要通过Windo ...

  7. Android开发艺术探索第五章——理解RemoteViews

    Android开发艺术探索第五章--理解RemoteViews 这门课的重心在于RemoteViews,RemoteViews可以理解为一种远程的View,其实他和远程的Service是一样的,Rem ...

  8. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

    Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...

  9. Android开发艺术探索读书笔记——进程间通信

    1. 多进程使用场景 1) 应用某些模块由于特殊需求须要执行在单独进程中. 如消息推送,使消息推送进程与应用进程能单独存活,消息推送进程不会由于应用程序进程crash而受影响. 2) 为加大一个应用可 ...

  10. 《Android开发艺术探索》读书笔记 (9) 第9章 四大组件的工作过程

    第9章 四大组件的工作过程 9.1 四大组件的运行状态 (1)四大组件中只有BroadcastReceiver既可以在AndroidManifest文件中注册,也可以在代码中注册,其他三个组件都必须在 ...

随机推荐

  1. wamp的mysql密码修改

    ==方法1== 通过WAMP打开mysql控制台,提示输入密码,因为现在是空,所以直接按回车. 输入“use mysql”,意思是使用mysql这个数据库教程,提示“Database changed” ...

  2. php精粹-编写高效的php代码 --- php设计模式

    1.选择一个最合适的设计模式 没有任何事物是完美的,也没有人说过设计模式一个严格的放之四海而皆准的解决方法.因此你可以改变这些模式,使它们更适合手头的工作.对于某些设计模式而言,他们就是所属程序固有的 ...

  3. Solr4.8.0源码分析(27)之ImplicitDocRouter和CompositeIdRouter

    同样在公司工作中发现了一个现象, 1.我用/solr/admin/collections?action=CREATE&name=collection&numShards=3&r ...

  4. Stanford CoreNLP--Split Sentence

    分句功能参考 Stanford Tokenizer. 在edu.stanford.nlp.pipeline包中实现了一系列分词分句功能,其中SentenceAnnotator类实现了对文件分句功能. ...

  5. 【LA 5713 】 Qin Shi Huang's National Road System (MST)

    [题意] 秦始皇要在n个城市之间修路,而徐福声可以用法术位秦始皇免费修1条路,每个城市还有人口数,现要求徐福声所修之路的两城市的人口数之和A尽量大,而使n个城市互通需要修的路长B尽量短,从而使得A/B ...

  6. 李洪强iOS开发Swift篇—03_字符串和数据类型

    李洪强iOS开发Swift篇—03_字符串和数据类型 一.字符串 字符串是String类型的数据,用双引号""包住文字内容  let website = "http:// ...

  7. ANDROID_MARS学习笔记_S05_003_传感器采样率及属性

    1. 2. import android.app.Activity; import android.content.Context; import android.hardware.Sensor; i ...

  8. 【Xamarin挖墙脚系列:如何从一个Apk程序转化为Xamarin的程序】

    原文:[Xamarin挖墙脚系列:如何从一个Apk程序转化为Xamarin的程序] 工欲善其事必先利其器:工具下载:http://pan.baidu.com/s/1skxjwgH 接下来,我用个小的应 ...

  9. Handler sendMessage 与 obtainMessage (sendToTarget)

    这篇文章讲的很好: http://www.cnblogs.com/android007/archive/2012/05/10/2494766.html 两种用法: 1. private void se ...

  10. ExecutorService生命周期

    ExecutorService接口继承了Executor接口,定义了一些生命周期的方法 public interface ExecutorService extends Executor { void ...