详解Android Activity中的几种 * 和实现方式
作者:吕氏春秋 发布时间:2022-11-02 11:26:05
目录
Activity
View常用事件接口
设置监听的几种方法
1)让Activity实现接口
2) 匿名内部类
3) onClick可以在xml中设置
4) 实现类
5) 成员变量
Activity
在Activity中,使用findViewById(int resId)方法与布局中的控件绑定
View常用事件接口
View的事件监听是指用户与应用交互,当用户对View进行点击、长按、触摸、移动等动作时、程序对这些动作进行处理
OnClickListener 点击View时的监听
OnLongClickListener 长按View时的监听
OnTouchListener 触摸View时的监听
1.android系统中,OnClickListener 是一种处理点击事件的接口
public void onClick(View v){
//参数v为事件源控件,当长时间按下此控件时才会触发该方法。
//当多个组件共用同一个 * 时,用来区分组件
}
2.在android应用中,OnLongClick事件表示长按2秒以上触发的事,OnLongClickListener接口与OnClickListener接口
原理基本相同,只是该接口为View长按事件的捕捉接口,即当长时间按下某个View时触发的事件该接口对应的回调方法
如下:
public void onLongClick(View v){
//参数v为事件源控件,当长时间按下此控件时才会触发该方法
//当多个组件共用同一个 * 时,用来区分组件
//返回值:该方法返回值是一个boolean类型的变量
//当返回true时,表示完整的处理了这个事件,并不希望其他的回调方法再次进行处理
//当返回false时,表示并没有完成处理该事件,希望其他方法继续对其进行处理。
}
需要记住以下几点:
* 是一个接口,它包含了一个事件触发时系统会去调用的函数
在实现类中,根据你的项目重写这个函数
实现后的 * 需要绑定到按钮上,就像一个耳机可以发出声音,但你可以不去戴它,你是听不到它发出的声音的。
一般的情况是这个View可能需要这个 * ,而另外一个View需要另外一个 * ,每个监
听器各司其职,但功能相似时,也可以多个按钮共同绑定一个 * 。
各种控件,都有常用的事件,绑定 * 的函数命名规则是setOn ** Listener
设置监听的几种方法
1)让Activity实现接口
public class MainActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button back = (Button) findViewById(R.id.back);
back.setOnClickListener(this);
}
@Override
public void onClick(View v) {
//点击事件
}
}
2) 匿名内部类
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button back = (Button) findViewById(R.id.back);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//点击事件
//DoSomething
}
});
}
}
3) onClick可以在xml中设置
<Button
android:id="@+id/back"
android:onClick="buttonClick"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="←" />
//然后在代码中建立点击事件方法
//必须是public void 名称同android:onClick(View v)
public void buttonClick(View v){
//点击事件
}
4) 实现类
public class MyClick implements OnClickListener {
@Override
public void onClick(View v) {
//点击事件
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button back = (Button) findViewById(R.id.back);
MyClick listener = new MyClick();
back.setOnClickListener(listener);
}
5) 成员变量
private OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
//点击事件
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button back = (Button) findViewById(R.id.back);
back.setOnClickListener(listener);
}
来源:https://juejin.cn/post/6939826100730069029


猜你喜欢
- * 的实现使用的模式:代理模式。代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。类似租房的中介。两种 * :(1)jd
- 前面文章介绍了如何使用JAVA的反射机制来调用蓝牙的隐藏API,本文继续来练习JAVA的反射机制,探秘TelephonyManager在Fr
- 上一章节回顾:Netty分布式源码分析监听读事件概述pipeline, 顾名思义, 就是管道的意思, 在net
- 限流器算法目前常用限流器算法为两种:令牌桶算法和漏桶算法,主要区别在于:漏桶算法能够强行限制请求速率,平滑突发请求,而令牌桶算法在限定平均速
- 本文实例讲解了Android自动提取短信验证码解决方案,分享给大家供大家参考,具体内容如下<uses-permission andro
- 本文实例讲述了Android控件Tween动画(补间动画)实现方法。分享给大家供大家参考,具体如下:Android动画中的Tween动画:是
- 队列的特性很简答,就是先进先出,一般利用数组来实现。实现队列自然要实现几个函数:入队,出队,判断队满,判断队空,获得队头,队尾。实现队列的关
- 封装:就是把一些属性和方法封装到一个类里。 继承:就如子类继承父类的一些属性和方法。 多态:就如一个父类有多个不同特色的子类。 这里我就不多
- 一、前言在java中,异常机制是非常有用的构成部分,异常信息对于查找错误来说是必不可少至关重要的信息,因此我们希望在发生错误的时候先看到捕捉
- Java排序 - DualPivotQuicksort这里描述 leftmost = true 的情况,也就是会从数组的开始一直排序到数组的
- 一、创建线程启动线程—start 方法通过覆写 run 方法创建⼀个线程对象,但线程对象被创建出来并不意味着线程就开始运
- 背景介绍你刚从学校毕业后,到新公司实习,试用期又被毕业,然后你又不得不出来面试,好在面试的时候碰到个美女面试官!面试官: 小伙子,
- mybatis输出SQL格式化通过第三方日志工具可以控制日志级别的输出,但是我们发现mybatis输出的SQL不是那么的完整,我们SQL里的
- 通过使用java mail来实现读取163邮箱,qq邮箱的邮件内容。1.代码实现创建springboot项目,引入依赖包<!--mai
- 有这样一个有关汽车的类。public class Car {  
- 背景事情是酱紫的,阿星的上级leader负责记录信息的业务,每日预估数据量是15万左右,所以引入sharding-jdbc做分表。上级lea
- 从配置获取的配置默认是明文的,有些像数据源这样的配置需要加密的话,需要对配置中心进行加密处理。下面使用对称性加密来加密配置,需要配置一个密钥
- in查询 <foreach>循环问题当我在做in查询的时候,发现在网上有很多种写法:接口public List<CaseR
- 背景我们项目一开始的所有提示都是中文,后来要做国际化。发现项目中的带双引号的中文居然有 2.3 w 多条!!!简直让人欲
- AOP :面向切面编程在程序设计中,我们需要满足高耦合低内聚,所以编程需满足六大原则,一个法则.AOP面向切面编程正是为了满足这些原则的一种