Android 事件处理

    事件就是用户对图形的操作,在android手机和平板电脑上,主要包含物理按键事件和触摸屏事件两类。物理按键事件包含:按下、抬起、长按等;触摸屏事件主要包含按下、抬起、滚动、双击等。

    在View中提供了onTouchEvent()方法,可以重写该方法来处理触摸屏事件,适用于重写组件的场景;android中还提供了setOnTouchListener()方法为组件设置监听器来处理触摸屏事件。

    在android中提供啦两种方式的事件处理,一种是基于监听的事件处理,一种是基于回调的事件处理。

一、基于监听的事件处理

   实现基于监听的事件处理,主要做法就是为android的UI组件绑定特定的事件监听器,在事件监听的处理模型中,主要有三个对象:

   ①、Event Source(事件源):即产生事件的来源,通常是各种组件,例如:按钮、窗口、菜单等

   ②、Event(事件):事件中封装了UI组件上发生的特定事件的具体信息,如果事件需要获取UI组件上所发生事件的相关信息,一般通过Event对象来传递

   ③、Event Listener(事件监听器):监听事件源所发生的事件,并对不同的事件做出相应的相应

二、基于回调的事件处理

    实现基于回调的事件处理,就是重写Android组件特定的回调方法或重写Activity的回调方法。为了使用回调机制来处理GUI组件(图形用户界面)上所发生的事件,需要为该组件提供对应的事件处理方法,可以通过继承GUI组件类,并重写该类的事件处理方法来实现。

    View类中包含的一些事件处理的回调方法:

     ①、Boolean onKeyDown(int keyCode,keyEvent event)  当用户在该组件上按下某个按键时触发

     ②、Boolean onKeyLongPress(int keyCode,KeyEvent event)  当用户在该组件上长按某个按键时触发

     ③、Boolean onKeyShortcut(int keyCode,KeyEvent event)  当一个键盘快捷键事件发生时触发

     ④、Boolean onKeyUp(int keyCode,KeyEvent event)  当用户在该组件上松开某个按键时触发

     ⑤、Boolean onTouchEvent(MotionEvent event)  当用户在该组件上触发触摸屏事件时触发

     ⑥、boolean onTrackballEvent(MotionEvent event) 当用户在该组件上触发轨迹球事件时触发

一般来说,基于回调的事件处理方式可用于处理一些通用性的事件,事件处理的代码会比较简洁。但对于某些特定的事件,无法采用基于回调的事件处理方式实现时,就只能采用基于监听的事件处理方式。

三、物理按键事件处理

   ①、Android设备可用物理按键及其触发事件

   音量键  KEYCODE_VOLUME_UP / KEYCODE_VOLUME_DOWN 控制当前上下音量,如音乐播放器、手机铃声、通话音量

   返回键  KEYCODE_BACK   返回到前一个界面

   菜单键  KEYCODE_MENU   显示当前应用的可用菜单

   ②、在android中处理物理按键事件时,常用的回调方法:

    onKeyUp()  当用户松开某个按键时触发该方法

    onKeyDown() 当用户按下(未松开)某个按键时触发该方法

    onkeyLongPress() 当用户长按某个按键时触发该方法

    ③、获取系统时间:system.currentTimeMillis()

四、触摸屏事件处理

   ①、单机事件

     在手机应用中,经常需要实现在屏幕中单机某个按钮或组件执行一些操作,这时就需要通过单机事件来完成。在处理单机事件时,可以通过为组件添加单击事件监听器的方法来实现。android为组件提供了setOnClickListener()方法,用于为组件设置单击事件监听器。该方法的参数是一个View.OnClickListener接口的实现类对象。View.OnClickListener接口定义如下:

   

1 pubic static interface View.OnClickListener{
2     public void onClick(View v);
3 
4 }

  在实现View.OnClickListener接口时,需要重写onClick()方法。当单击事件触发后,将调用onClick()方法执行具体的事件处理操作。

ag:为button的按钮添加一个单击事件监听器,并且实现单击该按钮时弹出消息提示显示:单击了按钮,代码如下:

   

Button button =new Button(this)
button.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){Toast.makeText(MainActivity.this,"单击了按钮",Toast.LENGTH_SHORT).show();}
});

   ②、长按事件

    长按事件不同于单击事件,长按事件需要长按某一个组件2秒之后才会触发。在处理长按事件时,可以通过为组件添加长按事件监听器的方法来实现。android为组件提供了setOnLongClickListener()方法,用于为组件设置长按事件监听器,该方法的参数是View.OnLongClickListener接口的实现类对象,接口定义如下:

1 public static interface View.OnLongClickListener{
2 
3    public void onLongClick(View v)
4 
5 }

在实现View.OnLongClickListener接口时,需要重写onLongClick()方法。当长按事件触发后,将调用onLongClick()方法执行具体的事件处理操作。

转载于:https://www.cnblogs.com/SM-Elephant/p/9831214.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/389445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

莫烦Pytorch神经网络第三章代码修改

3.1Regression回归 import torch import torch.nn.functional as F from torch.autograd import Variable import matplotlib.pyplot as plt""" 创建数据 """x torch.unsqueeze(torch.linspace(-1,1,100),dim1) y x.pow(2) 0.2*torch.rand(x…

为什么饼图有问题

介绍 (Introduction) It seems as if people are split on pie charts: either you passionately hate them, or you are indifferent. In this article, I am going to explain why pie charts are problematic and, if you fall into the latter category, what you can do w…

New Distinct Substrings(后缀数组)

New Distinct Substrings&#xff08;后缀数组&#xff09; 给定一个字符串&#xff0c;求不相同的子串的个数。\(n<50005\)。 显然&#xff0c;任何一个子串一定是后缀上的前缀。先&#xff08;按套路&#xff09;把后缀排好序&#xff0c;对于当前的后缀\(S_i\)&#xff0…

Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0...

在项目中加入react-native-camera的时候 出现的错误. 解决方案: 修改 implementation project(:react-native-camera)为 implementation (project(:react-native-camera)) {exclude group: "com.android.support"}查看原文 Could not find play-services-basement.aa…

先知模型 facebook_使用Facebook先知进行犯罪率预测

先知模型 facebookTime series prediction is one of the must-know techniques for any data scientist. Questions like predicting the weather, product sales, customer visit in the shopping center, or amount of inventory to maintain, etc - all about time series …

莫烦Pytorch神经网络第四章代码修改

4.1CNN卷积神经网络 import torch import torch.nn as nn from torch.autograd import Variable import torch.utils.data as Data import torchvision import matplotlib.pyplot as pltEPOCH 1 BATCH_SIZE 50 LR 0.001 DOWNLOAD_MNIST False #如果数据集已经下载到…

github gists 101使代码共享漂亮

If you’ve been going through Medium, looking at technical articles, you’ve undoubtedly seen little windows that look like the below:如果您一直在阅读Medium&#xff0c;并查看技术文章&#xff0c;那么您无疑会看到类似于以下内容的小窗口&#xff1a; def hello_…

loj #6278. 数列分块入门 2

题目 题解 区间修改&#xff0c;询问区间小于c的个数。分块排序&#xff0c;用vector。至于那个块的大小&#xff0c;好像要用到均值不等式 我不太会。。。就开始一个个试&#xff0c;发现sizsqrt(n)/4时最快&#xff01;&#xff01;&#xff01;明天去学一下算分块复杂度的方…

基于Netty的百万级推送服务设计要点

1. 背景1.1. 话题来源最近很多从事移动互联网和物联网开发的同学给我发邮件或者微博私信我&#xff0c;咨询推送服务相关的问题。问题五花八门&#xff0c;在帮助大家答疑解惑的过程中&#xff0c;我也对问题进行了总结&#xff0c;大概可以归纳为如下几类&#xff1a;1&#x…

莫烦Pytorch神经网络第五章代码修改

5.1动态Dynamic import torch from torch import nn import numpy as np import matplotlib.pyplot as plt# torch.manual_seed(1) # reproducible# Hyper Parameters INPUT_SIZE 1 # rnn input size / image width LR 0.02 # learning rateclass…

鲜为人知的6个黑科技网站_6种鲜为人知的熊猫绘图工具

鲜为人知的6个黑科技网站Pandas is the go-to Python library for data analysis and manipulation. It provides numerous functions and methods that expedice the data analysis process.Pandas是用于数据分析和处理的Python库。 它提供了加速数据分析过程的众多功能和方法…

VRRP网关冗余

实验要求 1、R1创建环回口&#xff0c;模拟外网 2、R2&#xff0c;R3使用VRRP技术 3、路由器之间使用EIGRP路由协议  实验拓扑  实验配置  R1(config)#interface loopback 0R1(config-if)#ip address 1.1.1.1 255.255.255.0R1(config-if)#int e0/0R1(config-if)#ip addr…

网页JS获取当前地理位置(省市区)

网页JS获取当前地理位置&#xff08;省市区&#xff09; 一、总结 一句话总结&#xff1a;ip查询接口 二、网页JS获取当前地理位置&#xff08;省市区&#xff09; 眼看2014又要过去了&#xff0c;翻翻今年的文章好像没有写几篇&#xff0c;忙真的或许已经不能成为借口了&#…

大熊猫卸妆后_您不应错过的6大熊猫行动

大熊猫卸妆后数据科学 (Data Science) Pandas is used mainly for reading, cleaning, and extracting insights from data. We will see an advanced use of Pandas which are very important to a Data Scientist. These operations are used to analyze data and manipulate…

数据eda_关于分类和有序数据的EDA

数据eda数据科学和机器学习统计 (STATISTICS FOR DATA SCIENCE AND MACHINE LEARNING) Categorical variables are the ones where the possible values are provided as a set of options, it can be pre-defined or open. An example can be the gender of a person. In the …

PyTorch官方教程中文版:PYTORCH之60MIN入门教程代码学习

Pytorch入门 import torch""" 构建非初始化的矩阵 """x torch.empty(5,3) #print(x)""" 构建随机初始化矩阵 """x torch.rand(5,3)""" 构造一个矩阵全为 0&#xff0c;而且数据类型是 long &qu…

Flexbox 最简单的表单

弹性布局(Flexbox)逐渐流行&#xff0c;越来越多的人开始使用&#xff0c;因为它写Css布局真是太简单了一一、<form>元素表单使用<form>元素<form></form>复制代码上面是一个空的表单&#xff0c;根据HTML标准&#xff0c;它是一个块级元素&#xff0c…

CSS中的盒子模型

一.为什么使用CSS 1.有效的传递页面信息 2.使用CSS美化过的页面文本&#xff0c;使页面漂亮、美观&#xff0c;吸引用户 3.可以很好的突出页面的主题内容&#xff0c;使用户第一眼可以看到页面主要内容 4.具有良好的用户体验 二.字体样式属性 1.font-family:英…

jdk重启后步行_向后介绍步行以一种新颖的方式来预测未来

jdk重启后步行“永远不要做出预测&#xff0c;尤其是关于未来的预测。” (KK Steincke) (“Never Make Predictions, Especially About the Future.” (K. K. Steincke)) Does this picture portray a horse or a car? 这张照片描绘的是马还是汽车&#xff1f; How likely is …

PyTorch官方教程中文版:入门强化教程代码学习

PyTorch之数据加载和处理 from __future__ import print_function, division import os import torch import pandas as pd #用于更容易地进行csv解析 from skimage import io, transform #用于图像的IO和变换 import numpy as np import matplotlib.pyplot a…