android xml事件,安卓事件

1、自定义内部类

2、匿名内部类

3、当前activity去实现事件接口

4、在布局文件xml中添加点击事件属性(使用频率非常高)

补充:

a、Android 在xml文件中 给某个控件声明 id 是: "@+/自定义名字" ,

获取是: "@/自定义的名字" , 例如: android:id="@id/btn1", 文本 android:text="@string/long_text" ,图片等。

b、安卓的View 的继承关系:

3a8bb0e6b518

安卓的View继承关系.png

1、自定义内部类 MyClickListener

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 1、获取按钮(自定义内部类)

Button btn = findViewById(R.id.btn1); // 通过 findViewById 去找索引

// 2、注册按钮

MyClickListener mclick1 = new MyClickListener();

btn.setOnClickListener(mclick1);

}

// 3、内部类 -- 点击事件触发

class MyClickListener implements View.OnClickListener {

@Override

public void onClick(View view) {

Log.e("tag","点击了......");

}

}

xml文件

android:id="@+id/btn1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按钮点击事件">

2、匿名内部类(就是 生成对象的时候才知道是什么类名)

做参数 传参的时候 new Xxxxclass 就是匿名对象了。

Button btn2 = findViewById(R.id.btn1);

btn2.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Log.e("Tag","通过匿名内部类实现按钮点击");

}

});

3、当前activity去实现事件接口

自己写个接口,根据1中的“自定义内部类” 思想,我们可以看到只要是一个类都是可以 执行(implements)一个接口。那么为何自己的类 使用不是更好吗?是的,开工,跟着我实现这个接口吧。

// implements View.OnClickListener 是自己添加的 要实现的接口

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

// 定义一个按钮

Button btn3 = findViewById(R.id.btn1);

btn3.setOnClickListener(this);// this 指当前类

}

@Override

public void onClick(View view) {

Log.e("TAG","使用本类实现了OnClickListener");

}

}

4、在布局文件xml中添加点击事件属性

xml文件是这样 --- 推荐给个ID

android:id="@+id/btn4"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="在xml文件中绑定事件"

android:onClick="myAction"/>

android:id="@+id/btn5"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="在xml文件中绑定事件"

android:onClick="myAction"/>

//参数:被点击的控件对象 View

public void myAction(View v){

switch (v.getId()){

case R.id.btn4:

Log.e("TAG","通过xml绑定点击事件 btn4");

break;

case R.id.btn5:

Log.e("TAG","通过xml绑定点击事件 btn5");

break;

}

}

demo效果:

3a8bb0e6b518

最后一种经常使用.jpeg

疑惑?

为什么click里边都是 onClick(View view),我点击的是Button呀!

答:上面给了个View的继承关系,button也是继承View的。因为点击事件并不仅仅Button才有事件,其它UI控件也要,所以使用View更加合适。

总结:

1、如果多个按钮(点击事件)的操作差不多就使用自定义,可以减少代码,更加简洁。

2、如果某个按钮的事件是唯一的,那么使用 匿名内部类吧。(没有绝对,只有更好)

3、xml中绑定事件 经常使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cocos2d-x v3.0物理系统 利用PhysicsEditor创建多边形

Cocos2d-x 3.0的新物理系统我就不必多说了,接触一段时间,感觉还是不错的。对于那些基本概念,网上的教程已经泛滥了,就不多说了,不过对于创建多边形物体的教程,还真不多,很多都是创建圆形和矩形&…

公众号开发 单独 给某个用户 推送消息_韩国5G用户6月底已达134万 较5月底增加近70%...

中关村在线消息:韩国三大运营商SK、KT和LG率先于去年12月开始向企业用户提供商用5G 服务,今年4月初推出面向个人消费者的5G民用服务。韩国作为全球首个推出5G 服务的国家,他们的5G用户数量在6月时已经突破100万大关。日前韩国公布6月底最新的…

程序语言的概念知识笔记

1、低级语言和高级语言 计算机指令程序:0、1 组成的机器指令序列。特点:效率低、可读性差、难以维护。 汇编指令:用常用的符号代替0、1 序列来 表示机器指令,例如用ADD表示加法。 高级语言:面向对象设计的各类应用的程…

java lambda 表达式中的双冒号和箭头的用法 ::

先构造一些数据,创建一个User类 java lambda 表达式中的双冒号的用法 :: 双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 如下图所示 User是一个类, getAge是方法名,注意是方法名呀,后面没有括号()的。为什么不要括号…

linux内核设计与实现 中文第三版 pdf_大牛推荐的5本 Linux 经典必读书

今天给大家推荐5本Linux学习相关的书籍;这些书籍基本都是很多大牛推荐过,并且深受业界好评的书;虽然只有5本,但是相信把5本全都认真看过的同学应该不多吧?希望这些书能够帮助你进阶为大牛!5.《鸟哥的 Linux…

号称最好的国产操作系统在 Windows 10 面前能否一战?

统信软件旗下的UOS操作系统正式推出UOS V20个人版,并开启99元预售活动。统信UOS虽名不见经传,但身披“国产操作系统”外衣的它却让科技圈炸开了锅。有人说它是“国货之光”,堪称最好的国产系统,但也因为“收费”的问题引发一致批评…

js打开android应用程序,浏览器通过JS打开Android程序

做项目的时候,项目中有个需求,需要通过网页打开app,听到这个功能,我先是蛋疼了一会,但是在网上查了一下资料发现原理其实很简单,本质就是通过浏览器输入我们本地android程序的路径,不过这个路径…

lamba统计最大值,最小值,平均值,总和,个数

代码如下: List<Integer> ages Arrays.asList(1,3,5,7,8,10,12); IntSummaryStatistics intSummaryStatistics ages.stream().mapToInt(e -> e).summaryStatistics(); System.out.println("最大值: " intSummaryStatistics.getMax()); System.out.print…

程序语言的组成知识笔记

程序语言的基本成分包括数据‘运算、控制、传输。 1、程序语言的数据成分 数据成分指程序中的数据对象&#xff0c;数据是程序程序操作的对象&#xff0c;具有存储类型、数据类型、数据名称、作用域、生存周期等属性。 1.1 常量和变量 按照程序运行时数据能否改变&#xff0c;将…

python车牌识别逆光怎么办代码_这摄像头除了能逆光识别车牌,还会跟人打招呼?...

前段时间&#xff0c;笔者偶然在某宝上发现了一款变光全彩的智能警戒摄像头&#xff01;这款摄像头的型号为JA-F8&#xff0c;是一台室外防水枪机。说实话&#xff0c;这东西外观有点奇葩&#xff0c;谈不上好看。但正是因为它“骨骼精奇”&#xff0c;我才抱着好奇的心态点了进…

Executors创建线程池

java jdk1.5提供线程池 在java.util.concurrent包下提供工厂类Executors用于生产线程池&#xff0c;Executors提供了4种线程池 newFixedThreadPool&#xff1a; 创建一个线程池&#xff0c;该线程池重用固定数量的从共享无界队列中运行的线程。 newScheduledThreadPool&#x…

Maven项目中使用JUnit进行单元测试

1.打开maven项目中的pom.xml&#xff0c;添加JUnit 的jar包 2.在src/test/java下右键新建JUnit Test Cast 转载于:https://www.cnblogs.com/liaojie970/p/5588326.html

汇编程序基本原理知识笔记

1、汇编语言的概念 定义&#xff1a;为特定计算机或计算机系统设计的面向机器的符号化程序设计语言。汇编程序也就是用汇编语言编写的程序。计算机要运行汇编程序需要用专门的翻译程序进行翻译&#xff0c;然后计算机才可以识别。 汇编语句的分类&#xff1a;指令语句、伪指令语…

linux虚拟主机_Windows虚拟主机和linux虚拟主机有什么区别?

不少租用虚拟主机的用户在问一个同样的问题&#xff1a;windows空间和linux空间哪个好?这里给大家做一下全面的科普。一、windows空间和linux空间的区别系统的不同①windows空间则是由windows系统的服务器开设出来的空间&#xff0c;其中windows server系统环境大多为win2008&…

编译程序基本原理的知识笔记

编译程序的作用是把某高级语言书写的源程序翻译成与之等价的目标程序。 1、编译过程 1.1 词法分析 编译过程的第一阶段主要任务是对源程序从前往后&#xff08;从左往右&#xff09;逐个字符扫描&#xff0c;从中识别出一个个单词符号。“单词”是程序设计语言的基本语法单位&a…

lamaba中reduce方法将集合中的所有整数相加,并返回其总和

reduce&#xff1a;也是对所有值进行操作&#xff0c;但它是将所有值&#xff0c;按照传入的处理逻辑&#xff0c;将结果处理合并为一个 如&#xff1a;将集合中的所有整数相加&#xff0c;并返回其总和 下面看个例子: 如&#xff1a;将集合中的所有整数相加&#xff0c;并返…

mx2 android os耗电,魅族MX3 Flyme OS 3.2充电慢、耗电快问题的解决方法详解

一个星期前刷了3.2&#xff0c;但充电和耗电问题一直困扰着我&#xff0c;我的魅兔主要出现以下问题&#xff1a;1.充电慢&#xff0c;基本四个小时充满。如果一边玩一边充&#xff0c;甚至会掉电。2.耗电极快&#xff0c;待机一小时掉电10%&#xff0c;待机一晚掉电50%。倒是出…

UML入门之类图教程

一 简单实例电话父类telphone 拥有发消息和打电话接口Playgame 能够打游戏AndroidPhone 重写了发消息 继承于telphoneMacPhone 除了基础打电话和发消息&#xff0c;还能打游戏 继承于telphone实现于playgame了接口GameMaching 能够打游戏 实现于playgame了接口 二解决问题 1. …

网络基础:Ping命令的7种基础用法,掌握了秒变大神!

现在不管安防工程还是弱电工程&#xff0c;与网络的联系也越来越密切了&#xff0c;网络基础知识中的网络命令ping命令在项目中是使用频率最高的&#xff0c;一般我们用的都是它的基本功能&#xff0c;今天和大家来详细看下Ping命令的7个基础用法&#xff0c;掌握了秒变大神&am…

java枚举返回字符串_Java新特性:数据类型可以扔掉了?

关注“脚本之家”&#xff0c;与百万开发者在一起作者 | 王磊来源 | Java中文社群(ID&#xff1a;javacn666)在很久很久以前&#xff0c;我们写代码时要慎重的考虑变量的数据类型&#xff0c;比如下面这些&#xff1a;枚举&#xff1a;尽管在 JDK 5 中增加了枚举类型&#xff0…