目录

前言

(一)安卓手势操作原理

(二)安卓手势类与接口

二、利用手势切换图片

1.创建安卓应用

3、字符串资源文件

4、主布局资源文件

5、主界面类实现功能

6、启动应用,查看效果

总结


前言

  • 现代智能手机都支持触屏手势操作,可以方便地实现多种功能,最常见的是通过上下左右滑动手势实现切换功能。

一、新课讲解

(一)安卓手势操作原理

在安卓系统中,每一次手势交互都会依照以下顺序执行,这个顺序可以说就是安卓手势操作的原理。
触屏一刹那,触发一个MotionEvent事件。该事件被OnTouchListener监听,在其onTouch()方法里获得该MotionEvent对象。
通过GestureDetector(手势侦测器)将此MotionEvent对象移交给OnGestureListener。
OnGestureListener监听器获得该事件对象,然后根据该对象封装的信息,做出合适的处理。

(二)安卓手势类与接口

1、MotionEvent

动作事件类,用于封装手势、触摸笔、轨迹球等等的动作事件。其内部封装了两个重要的属性X和Y,这两个属性分别用于记录横轴和纵轴的坐标。

2、GestureDetector

手势侦测器,用于识别各种手势。

3、OnGestureListener
手势监听器,是一个手势交互的监听接口,其中提供了多个抽象方法,并根据GestureDetector的手势识别结果调用相对应的方法。

二、利用手势切换图片

1.创建安卓应用

基于Empty Activity模板创建安卓应用 - SwtichBelleImageByGesture

单击【Finish】按钮

2.准备图片素材

将图片素材拷贝到drawable目录

3、字符串资源文件

  • 字符串资源文件 - strings.xml

4、主布局资源文件

  • 主布局资源文件activity_main.xml

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/root"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/background"android:orientation="vertical"tools:context=".MainActivity"></LinearLayout>

查看预览效果:

5、主界面类实现功能

  • 主界面类 - MainActivity

定义常量和变量

通过资源标识符获取控件实例

初始化图像资源标识符数组

 实例化手势侦测器,每个事件处理方法输出一条调试信息

代码如下:

detector = new GestureDetector(this, new GestureDetector.OnGestureListener() {@Overridepublic boolean onDown(MotionEvent e) {Log.d(TAG,"onDown event invoked");return false;}@Overridepublic void onShowPress(MotionEvent e) {Log.d(TAG,"onShowPress event invoked");}@Overridepublic boolean onSingleTapUp(MotionEvent e) {Log.d(TAG,"onSingleTapUp event invoked");return false;}@Overridepublic boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {Log.d(TAG,"onScroll event invoked");return false;}@Overridepublic void onLongPress(MotionEvent e) {Log.d(TAG,"onLongPress event invoked");}@Overridepublic boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {Log.d(TAG,"onFling event invoked");return false;}
});

针对手势滑动,我们编写onFling()事件处理方法,通过手势切换图片。这个事件处理方法有四个参数,滑动起点信息封装在e1里,滑动终点信息封装在e2里,第3个参数是手势横向滑动速度,第4个参数是手势纵向滑动速度

将窗口的触摸事件交给手势侦测器来处理

6、启动应用,查看效果


总结

智能手机现已经都实现手势操作,学会安卓手势将给我们的技术提供更有利的解决方法。本篇文章教会大家如何通过手势实现如何上下左右切换图片。

安卓编程基础——手势编程相关推荐

  1. DirectInput编程基础-游戏手柄编程

    导读: DirectInput编程基础 - 简介 出 处: 中国游戏开发者 [ 2001-09-09] 作 者: 目 录 1.1 DirectInput概念 1.2 设置DirectInput 1.3 ...

  2. java语言编程基础_Java编程基础02——Java语言基础

    1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的分类 字符串常 ...

  3. [Java网络编程基础]网络编程概述,三要素,IP地址

  4. 迈入JavaWeb第一步,Java网络编程基础,TCP网络编程URL网络编程等

    文章目录 网络编程概述 网络通信要素 要素一IP和端口号 要素二网络协议 TCP网络编程 UDP网络编程 URL网络编程 Java网络编程基础 网络编程概述 Java是Internet上的语言,它从语 ...

  5. 【Python学习教程】Python编程基础

    文章目录 编程语言是什么 编译型语言和解释型语言的区别 编译型语言 1) 可执行程序不能跨平台 2) 源代码不能跨平台 解释型语言 关于 Python 总结 Python是什么,Python简介 Py ...

  6. 〖Web全栈开发①〗—网络编程基础(上)

    网络编程基础 网络编程 网络编程概述 TCP/IP协议 IP地址 什么是IP IP组成 IP 地址使用过程 查看IP Ip地址分类: 子网掩码 端口 socket Socket原理 1.什么是Sock ...

  7. 如何连接Linux上的服务器 网络编程,Linux 网络编程 一

    一.网络编程基础 网络编程本身是一门很大的学问,涉及到的东西也很多,尤其是各种协议.先看图: 正如上图所示,网络编程中包含五大层面(也有区分六个层面),从应用层到物理层可以明显看出 越往下越接近计算机 ...

  8. 没有编程基础如何做安卓开发,试试这款简单易学的中文开发编程工具!

    对于没有java编程基础的人来说,想要开发自己的安卓app可能很难. 我们都知道,现在流行的编程工具都是外国人开发的.全英文的界面,再加上全程使英文来写代码,让很多初学者望而却步.绝大部分人选择花费一 ...

  9. 学python需要什么文化基础-中国大学MOOC的APP2020Python编程基础答案

    中国大学MOOC的APP2020Python编程基础答案 更多相关问题 :某年级有4个班,不算甲班其余三个班的总人数是131人:不算丁班其余三个班的总人数是134人::24,35,48,63,(). ...

最新文章

  1. python3 print设置不换行
  2. 美国宇航局:十年内VR/AR设备将成为标配
  3. 关于“粪”,你知道多少?【Feign是个什么玩意儿?】
  4. 处于RUNNABLE状态的Java线程未真正运行
  5. 【转】三、QT例子-打开一个图片并且显示
  6. glance查看进程内存使用过大问题
  7. php获取类的实例变量
  8. 2008年最吸引眼球的10只股票
  9. 网站推广第一周总结和反思
  10. C语言编程习惯和修养
  11. STM32F105 实现USB BULK传输
  12. python如何获取列表的长度
  13. 曲靖师范计算机科学与技术,曲靖师范学院计算机科学与工程学院试讲表.doc
  14. 判断手机号是否可注册淘宝
  15. 35岁后最可怕的事,就是成为职场中的奢侈品
  16. 2022.11.20 学习周报
  17. 附近快遇见 ios技术支持网址
  18. springboot 网页出现乱码
  19. 人工智能的高地——情感计算
  20. 使用Carbide.vs与VS.NET2003构建Symbian开发平台-S60 平台(转)

热门文章

  1. JAVA中的进制以及转换
  2. 大学数据结构课程设计题目
  3. springboot整合Hystrix 熔断器
  4. 工具篇 之 iTerm 2 用户名修改(基于 iTerm 2 + oh-my-zsh)
  5. latex/texlive行超出正文(间)公式或文字超出。
  6. 编程题——合法括号序列
  7. MQTT下载安装和简单使用
  8. PHP读取word文档的方法分析
  9. 堆栈指针寄存器-SP详解
  10. 新增11条新规约,阿里Java开发手册|黄山版,拥抱规范,远离伤害