首页 > 其他分享 >2023/5/9

2023/5/9

时间:2023-05-15 09:33:08浏览次数:31  
标签:事件处理 自定义 int boolean 2023 组件 event

什么是方法回调?

答:是将功能定义与功能分开的一种手段,一种解耦合的设计思想;在Java中回调是通过接口来实现的,
作为一种系统架构,必须要有自己的运行环境,且需要为用户提供实现接口;实现依赖于客户,这样就可以
达到接口统一,实现不同,系统通过在不同的状态下”回调”我们的实现类,从而达到接口和实现的分离!

.Android回调的事件处理机制详解:
在Android中基于回调的事件处理机制使用场景有两个:

1)自定义view
当用户在GUI组件上激发某个事件时,组件有自己特定的方法会负责处理该事件
通常用法:继承基本的GUI组件,重写该组件的事件处理方法,即自定义view
注意:在xml布局中使用自定义的view时,需要使用”全限定类名”

常见View组件的回调方法:

android为GUI组件提供了一些事件处理的回调方法,以View为例,有以下几个方法

①在该组件上触发屏幕事件: boolean onTouchEvent(MotionEvent event);
②在该组件上按下某个按钮时: boolean onKeyDown(int keyCode,KeyEvent event);
③松开组件上的某个按钮时: boolean onKeyUp(int keyCode,KeyEvent event);
④长按组件某个按钮时: boolean onKeyLongPress(int keyCode,KeyEvent event);
⑤键盘快捷键事件发生: boolean onKeyShortcut(int keyCode,KeyEvent event);
⑥在组件上触发轨迹球屏事件: boolean onTrackballEvent(MotionEvent event);
*⑦当组件的焦点发生改变,和前面的6个不同,这个方法只能够在View中重写哦!
protected void onFocusChanged(boolean gainFocus, int direction, Rect previously FocusedRect)

另外,这了解释下什么是轨迹球,不过用处不大,在以前黑莓的手机上可以看到;当我们浏览网页的的时候
,可以把轨迹球看作鼠标,不过这样的操作,我们用onTouchEvent就可以解决了,而且不够美观,所以现在
用的很好,基本不用,如果你有兴趣想看看的话,可以在原始Android模拟器按f6就可以看到了!

 

代码示例:
我们自定义一个MyButton类继承Button类,然后重写onKeyLongPress方法;
接着在xml文件中通过全限定类名调用自定义的view

 

一个简单的按钮,点击按钮后触发onTouchEvent事件,当我们按模拟器上的键盘时,
按下触发onKeyDown,离开键盘时触发onKeyUp事件!我们通过Logcat进行查看!

标签:事件处理,自定义,int,boolean,2023,组件,event
From: https://www.cnblogs.com/lklyouhouhou/p/17400870.html

相关文章

  • SSO2.0 4-20230514
                 ......
  • 2023/4/25
    HTML链接是通过标签<a>来定义的<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>ZONGXP</title></head><body><ahref="https://blog.csdn.net/zong596568821xp">这是一个链接使用了href属性<......
  • 2023/4/24
    HTML标题(Heading)是通过<h1>-<h6>标签来定义的.<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>ZONGXP</title></head><body><h1>这是标题1</h1><h2>这是标题2</h2><h3&g......
  • 2023/4/26
    1.帧动画概念以及用法帧动画非常容易理解,其实就是简单的由N张静态图片收集起来,然后我们通过控制依次显示这些图片,因为人眼“视觉残留”的原因,会让我们造成动画的“错觉”,跟放电影的原理一样!而Android中实现帧动画,一般我们会用到前面讲解到的一个Drawable:AnimationDrawable先编写......
  • 2023/4/27
     表单<formaction="demo_form.php"method="post/get"><inputtype="text"name="email"size="40"maxlength="50"><inputtype="password"><inputtype="checkbox"......
  • 2023/4/28
    无序列表<ul><li>项目</li><li>项目</li></ul>有序列表<ol><li>第一项</li><li>第二项</li></ol>定义列表<dl><dt>项目1</dt><dd>描述项目1</dd><dt>项目2&l......
  • 2023/5/15之前关于MongoDB的学习实践
    showdbs/collections/tables;use库创建库db.dropDatabase();删除库db.createCollections('');创建集合db.集合.drop();删除集合db.集合.insertOne/Many集合中插入数据db.集合.remove();删除文档for(leti=x;i<x;i++){}循环操作db.集合.update({条件},{$set:{更改后}})......
  • 2023.5.14
    1#include<iostream>2usingnamespacestd;3#include<vector>4voidprintVector(vector<int>&v)5{6for(vector<int>::iteratorit=v.begin();it<v.end();it++)7{8cout<<*it<<......
  • 编程一小时2023.5.14
    #include<iostream>#include<vector>usingnamespacestd;boolcmp(vector<int>&A,vector<int>&B){if(A.size()!=B.size())returnA.size()>B.size();for(inti=A.size()-1;i>=0;i--)if(A[i]!=B[i])re......
  • 【2023-05-13】连岳摘抄
    23:59善于等待的人,一切都会及时来到。                                                 ——巴尔扎克功名利禄,荣华富贵,确实要看淡。看淡了才不偏执,不会趋炎附势,也不......