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.pswp.cn/news/389445.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/389445.shtml
英文地址,請注明出處:http://en.pswp.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…