安卓开发学习12-1:Android事件处理和手势:事件处理概述

两种事件处理

  1. 基于监听的事件处理
  2. 基于回调的事件处理

基于监听的事件处理

为UI组件绑定特定的监听器,例如按钮监听点击

三个事件处理相关的对象

该事件处理构成包括三个对象:事件源、事件监听器、事件

  • 事件源:例如按钮之类的,触发事件的对象
  • 事件监听器::为事件源添加事件监听器,例如设置点击事件监听器
  • 事件:在事件监听器中添加监听事件,例如设置了点击事件监听器,那么就可以监听点击事件
    在这里插入图片描述

事件处理流程

为事件源添加事件监听器,由外部动作触发事件源(例如点击)从而产生事件,然后将事件传入到事件监听器中,由事件处理器处理
在这里插入图片描述

实例

如下是监听按钮点击的实例

Button jump = findViewById(R.id.jump);
jump.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Toast.makeText(MainActivity.this, "点击了", Toast.LENGTH_SHORT);
    }
});

基于回调的事件处理

两种方式

  • 重写Android组件的回调方法
  • 重写Activity的回调方法

几个重写方法

一般经常重写的几个方法有:onTouchEvent、onKeyUp、onKeyDown

package com.example.study2;

import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        Toast.makeText(MainActivity.this, "触摸", Toast.LENGTH_SHORT).show();
        return super.onTouchEvent(event);
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        Toast.makeText(MainActivity.this, "放开", Toast.LENGTH_SHORT).show();
        return super.onKeyUp(keyCode, event);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        Toast.makeText(MainActivity.this, "按下", Toast.LENGTH_SHORT).show();
        return super.onKeyDown(keyCode, event);
    }
}
  • onTouchEvent:触摸屏幕触发
  • onKeyDown:按下手机的物理按键
  • onKeyUp:松开手机的物理按键,例如松开手机的电量按钮

应用场景

通过上述可以知道,基于回调的事件处理方式,其中keyDown是所有物理按键按下都会触发,而基于监听的事件处理方式,例如监听点击,只能是监听某个事件源例如按钮的点击事件
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值