Android (安卓) 事件处理

Android (安卓) 事件处理

Android教程

Android(安卓) 教程

Android (安卓) 环境设置

Android (安卓) Android Studio 安装

Android (安卓) 体系结构

Android(安卓) 应用程序组件

Android(安卓) Hello World示例

Android(安卓) 资源的组织和访问

Android (安卓) Activity

Android (安卓) 服务(Services)

Android (安卓) 广播接收器(Broadcast Receivers)

Android (安卓) 内容提供者(Content Providers)

Android (安卓) 片段(Fragment)

Android (安卓) 单帧片段

Android (安卓) 列表片段

Android (安卓) 片段过渡

Android (安卓) 意图(Indent)和过滤器(Filter)

Android 用户界面

Android (安卓) UI 布局

Android (安卓) UI 控件

Android (安卓) 事件处理

Android (安卓)样式和主题

Android (安卓)自定义组件

Android 高级概念

Android (安卓)拖放

Android (安卓)通知

Android (安卓)位置服务

Android (安卓)发送电子邮件

Android (安卓)发送短信

Android (安卓)拨打电话

Android (安卓)发布应用程序

Android (安卓)警报对话框

Android (安卓)动画

Android (安卓)音频捕获

Android (安卓)铃声控制

Android (安卓)蓝牙

Android (安卓)相机

Android (安卓)剪贴板

Android (安卓)自定义字体

Android (安卓)手势

Android (安卓)图像效果

Android (安卓)图像切换器(ImageSwitcher)

Android (安卓)内部存储

Android (安卓)JSON解析器

Android (安卓)加载进度条

Android (安卓)本地化

Android (安卓)登录界面

Android (安卓)媒体播放器(MediaPlayer)

Android (安卓)多点触控

Android (安卓)导航

Android (安卓)网络连接

Android (安卓)PHP/MYSQL

Android (安卓)进度圈

Android (安卓)传感器

Android (安卓)会话管理

Android (安卓)拼写检查器

Android (安卓)SQLite数据库

Android (安卓)文字转语音

Android (安卓)XML解析器

上一节: Android (安卓) UI 控件

上一节

下一节: Android (安卓)样式和主题

下一节

Android (安卓) 事件处理

事件

事件是一种收集有关用户与应用程序的交互式组件进行交互的数据的有用方法。像按下按钮或触摸屏幕等。Android框架将事件队列保持为先进先出(FIFO)的基础。您可以在程序中捕获这些事件,并根据要求采取适当的措施。

与Android事件管理相关的以下三个概念-

事件监听器 - 事件监听器是View类中的一个接口,其中包含一个回调方法。当用户与UI中的项目进行交互触发了已注册侦听器的View时,Android框架将调用这些方法。

事件侦听器注册 - 事件注册是事件处理程序向事件侦听器注册的过程,以便在事件侦听器触发事件​​时调用该处理程序。

事件处理程序 - 当事件发生并且我们已经为该事件注册了一个事件侦听器时,该事件侦听器将调用事件处理程序,这是实际处理该事件的方法。

事件监听器和事件处理程序

事件处理

事件监听器

描述

onClick()

OnClickListener()

当用户单击或触摸或聚焦于任何小部件(如按钮,文本,图像等)时,将调用此方法。您将使用onClick()事件处理程序来处理此类事件。

onLongClick()

OnLongClickListener()

当用户单击或触摸或聚焦在任何小部件(如按钮,文本,图像等)上一秒钟或更长时间时,将调用此方法。您将使用onLongClick()事件处理程序来处理此类事件。

onFocusChange()

OnFocusChangeListener()

当小部件失去焦点时即调用此方法。用户离开视图项。您将使用onFocusChange()事件处理程序来处理此类事件。

onKey()

OnFocusChangeListener()

当用户专注于该项目并按下或释放设备上的硬件键时,将调用此方法。您将使用onKey()事件处理程序来处理此类事件。

onTouch()

OnTouchListener()

当用户按下键,释放键或屏幕上的任何移动手势时,将调用此方法。您将使用onTouch()事件处理程序来处理此类事件。

onMenuItemClick()

OnMenuItemClickListener()

用户选择菜单项时调用此方法。您将使用onMenuItemClick()事件处理程序来处理此类事件。

onCreateContextMenu()

onCreateContextMenuItemListener()

在构建上下文菜单时调用(持续的“长按”结果)

作为View类的一部分,可能还有更多事件侦听器,例如OnHoverListener,OnDragListener等,它们可能是您的应用程序所需要的。因此,如果您要开发复杂的应用程序,建议您参考Android应用程序开发的官方文档。

事件监听器注册

事件注册是事件处理程序向事件监听器注册的过程,以便在事件监听器触发事件​​时调用该处理程序。尽管有几种技巧可以为任何事件注册事件侦听器,但是我将仅列出前三种方式,您可以根据情况使用其中三种方式。

使用匿名内部类

Activity类实现Listener接口。

使用布局文件activity_main.xml直接指定事件处理程序。

以下部分将为您提供有关这三种情况的详细示例-

触控模式

用户可以使用硬件键或按钮或触摸屏幕与设备进行交互。触摸屏幕可使设备进入触摸模式。然后,用户可以通过触摸屏幕上的虚拟按钮,图像等与之交互。您可以通过调用View类的isInTouchMode()方法来检查设备是否处于触摸模式。

焦点

视图或窗口小部件通常在突出显示时会突出显示或显示闪烁的光标。这表明已准备好接受用户的输入。

isFocusable() - 返回true或false

isFocusableInTouchMode() -检查在触摸模式下视图是否可聚焦。(使用硬件键时,视图可能是可聚焦的,但设备处于触摸模式时则不能。)

android:foucsUp="@=id/button_l"

onTouchEvent()

public boolean onTouchEvent(motionEvent event){

switch(event.getAction()){

case TOUCH_DOWN:

Toast.makeText(this,"you have clicked down Touch button",Toast.LENTH_LONG).show();

break();

case TOUCH_UP:

Toast.makeText(this,"you have clicked up touch button",Toast.LENTH_LONG).show();

break;

case TOUCH_MOVE:

Toast.makeText(this,"you have clicked move touch button"Toast.LENTH_LONG).show();

break;

}

return super.onTouchEvent(event) ;

}

事件处理示例

使用匿名内部类注册事件侦听器 在这里,您将创建侦听器的匿名实现,如果每个类仅应用于单个控件,并且您具有将参数传递给事件处理程序的优势,则将很有用。在这种方法中,事件处理程序方法可以访问Activity的私有数据。无需引用即可调用“活动”。但是,如果将处理程序应用于多个控件,则必须剪切并粘贴该处理程序的代码,如果该处理程序的代码很长,则会使代码难以维护。以下是简单的步骤,以展示我们将如何利用单独的Listener类注册和捕获click事件。您可以类似的方式为任何其他必需的事件类型实现侦听器。

您将使用Android Studio创建一个Android应用程序,并将其命名为Demo,位于com.jc2182.demo包下,如Hello World示例一章中所述。

修改src/MainActivity.java文件创建一个简单的列TableView,其中包含显示为微调器项目的项目。

修改res/layout/activity_main.xml文件的默认内容以包括创建一个简单的列表视图。

运行该应用程序以启动Android模拟器并验证在该应用程序中所做更改的结果。

以下是修改后的主要活动文件src/com.jc2182.demo/MainActivity.java的内容。该文件可以包括每个基本生命周期方法。

package com.jc2182.demo;

import android.app.Activity;

import android.app.ProgressDialog;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity {

private ProgressDialog progress;

Button b1,b2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

progress = new ProgressDialog(this);

b1=(Button)findViewById(R.id.button);

b2=(Button)findViewById(R.id.button2);

b1.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

TextView txtView = (TextView) findViewById(R.id.textView);

txtView.setTextSize(25);

}

});

b2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

TextView txtView = (TextView) findViewById(R.id.textView);

txtView.setTextSize(55);

}

});

}

}

以下是res/layout/activity_main.xml文件的内容-

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".MainActivity">

android:id="@+id/textView1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="事件处理示例 "

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:textSize="30dp"/>

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="菜鸟教程 "

android:textColor="#ff87ff09"

android:textSize="30dp"

android:layout_above="@+id/imageButton"

android:layout_centerHorizontal="true"

android:layout_marginBottom="40dp" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id="@+id/imageButton"

android:src="@drawable/logo"

android:layout_centerVertical="true"

android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="小字体"

android:id="@+id/button"

android:layout_below="@+id/imageButton"

android:layout_centerHorizontal="true" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="大字体"

android:id="@+id/button2"

android:layout_below="@+id/button"

android:layout_alignRight="@+id/button"

android:layout_alignEnd="@+id/button" />

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Hello World!"

android:id="@+id/textView"

android:layout_below="@+id/button2"

android:layout_centerHorizontal="true"

android:textSize="25dp" />

让我们尝试运行刚刚修改的应用程序。我假设您在进行环境设置时已创建了AVD。要从Android Studio运行该应用,请打开您项目的活动文件之一,然后工具栏中单击“运行”图标。Android studio将应用程序安装在您的AVD上并启动它,如果设置和应用程序一切正常,它将显示在“模拟器”窗口下面-

点击“大字体”按钮,如下界面

我建议尝试为不同的事件类型编写不同的事件处理程序,并了解不同事件类型及其处理方式的确切区别。与菜单,微调器,选择器小部件相关的事件几乎没有什么不同,但它们也基于与上述相同的概念。

上一节: Android (安卓) UI 控件

上一节

下一节: Android (安卓)样式和主题

下一节

查看笔记 分享笔记

笔记内容:

称呼:

Email:

站点:

分享笔记 重置

分类导航

前端

Ajax 教程

Angular 教程

Aurelia 教程

Bootstrap 教程

ChartJS 教程

CSS 教程

ES6 教程

FontAwesome 教程

HTML 教程

HTML 字符集 教程

HTML 游戏 教程

JavaScript 教程

jQuery 教程

Less 教程

React 教程

Sass 教程

Stylus 教程

TypeScript 教程

Unity 教程

Vue.js 教程

WebAssembly 教程

XAML 教程

颜色 教程

服务端

C# 教程

C++ 教程

COBOL 教程

C语言 教程

Fortran 教程

Go 教程

Groovy 教程

Java 教程

JSP 教程

JVM 教程

Kotlin 教程

Lisp 教程

Lua 教程

Node.js 教程

Pascal 教程

Perl 教程

PHP 教程

Python 教程

Python 3 教程

Ruby 教程

Rust 教程

Scala 教程

Spring 教程

Spring Boot 教程

Spring Cloud 教程

VB.Net 教程

移动端

Android 教程

IOS 教程

Objective-C 教程

React Native 教程

Swift 教程

小程序 教程

数据库

Access 教程

DB2 教程

Mariadb 教程

Memcached 教程

MongoDB 教程

MySQL 教程

Neo4j 教程

PL/SQL 教程

PostgreSQL 教程

Redis 教程

SQL 教程

SQL Server 教程

SQLite 教程

T-SQL 教程

数据格式

Jackson 教程

JSON 教程

SVG 教程

XML 教程

开发工具

ActiveMQ 教程

Ant 教程

Apache HttpClient 教程

Apache POI PPT 教程

AWS 教程

Docker 教程

ElasticSearch 教程

ExpressJS 教程

GIT 教程

GitLab 教程

Google Maps 教程

Gradle 教程

Java NIO 教程

JavaFX 教程

JavaMail 教程

JDBC 教程

jMeter 教程

JPA 教程

jsoup 教程

Junit 教程

KoaJS 教程

Kubernetes 教程

Log4j 教程

Logstash 教程

Lucene 教程

Makefile 教程

Maven 教程

RESTful 教程

Sed 教程

SEO 教程

Servlet 教程

SLF4J 教程

Socket.IO 教程

Struts 教程

SVN 教程

TestNG 教程

UML 教程

UNIX / LINUX 教程

WebSocket 教程

WPF 教程

xStream 教程

区块链 教程

数据处理

Flink 教程

Flume 教程

Hadoop 教程

Hbase 教程

Hive 教程

Kafka 教程

Kibana 教程

MapReduce 教程

MATLAB 教程

MyBatis 教程

Pig 教程

R语言 教程

Solr 教程

Spark 教程

Storm 教程

Zookeeper 教程

大数据分析 教程

数据仓库 教程

数据挖掘 教程

计算机基础

HTTP 教程

IPv4 教程

IPv6 教程

Ubantu 教程

WebServices 教程

嵌入式系统 教程

操作系统 教程

数据结构和算法 教程

汇编语言 教程

物联网 教程

电子电路基础 教程

编译器设计 教程

网站开发 教程

计算机 教程

计算机基础 教程

计算机网络 教程

设计模式 教程

AI

CNTK 教程

Keras 教程

PyTorch 教程

TensorFlow 教程

人工智能 教程

机器学习 教程

Python 技术

Django 教程

Flask 教程

NumPy 教程

Pandas 教程

Pillow 教程

PyGTK 教程

PyQt5 教程

PySpark 教程

pytest 教程

Python -数据科学 教程

Python MySQL 教程

Python 取证 教程

Python 数据结构 教程

Python 文本处理 教程

Python 网络编程 教程

Python 网页抓取 教程

Python 设计模式 教程

RxPY 教程

SciPy 教程

Seaborn 教程

SymPy 教程

wxPython 教程

框架

Laravel 教程

Web 图标Icon 教程

Web2py 教程

WebGL 教程

WebRTC 教程

WordPress 教程

Yii 教程

Zend Framework 教程

SAP

Crystal Reports 教程

相关推荐

为什么自己挠自己不痒,别人挠就痒?
365bet是什么

为什么自己挠自己不痒,别人挠就痒?

📅 09-27 👁️ 6876
阴阳师河童哪里多2024
365bet体育娱乐

阴阳师河童哪里多2024

📅 08-03 👁️ 1241