小白带你学安卓——简单的事件监听
来源:互联网 发布:linux 自动发现新硬盘 编辑:程序博客网 时间:2024/05/17 03:09
这几天在亲戚家,可能更新知识点的速度不是很快,还望大家谅解哦~ 对于我们之前学的UI设计,只是把各种控件按照不同的规则放在Activity界面中,但是点击控件并没有什么提示。今天呢,我带着大家看一看简单的事件监听。
Android中的事件响应机制?
第一个问题还是先总结一下。安卓中的事件响应机制,到底是啥,其实作为初学的我来说,对其概念的了解不是很清楚,为什么我今天敢讲呢,就是会用了,知道了怎么去使用,所以讲给大家。(接下来我会总结成三个步骤,把事件响应机制进行简单的拆解)总结:一共分为三步a.找到事件源头--->控件(按钮,文件框,图片框...)b.找到事件--->点击(click) 拖拽(drag) 触摸(touch)c.设置事件监听--->接口 OnClickListener接口 OnTouchListener接口... OK,就这三个步骤,下面让我们来看第二个问题(概述完后会为大家提供参考示例)
事件监听的写法
它的写法呢,一共分为6种。还是根据具体的情况去判断你的项目适合哪一种比较方便:a.匿名内部类 I.//在Activity当前关联的而已上面找控件 Button btnOne = (Button) findViewById(R.id.button1); //设置事件监听 匿名内部类 II.btnOne.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //当用户点击了这个按钮,就会执行该方法 Toast.makeText(MainActivity.this, "按钮一被点击了", Toast.LENGTH_SHORT).show(); } }); III.在onClick方法中实现业务逻辑b.内部类 I.通过findViewById(xxx)找到控件 II.写一个内部类,实现View.OnClickListener接口,重写onClick方法 III.xxx.setOnClickListener(new 内部类) 设置事件的监听 c.Activity实现 View.OnClickListener接口 I..Activity实现 View.OnClickListener接口,重写onClick方法 II.通过findViewById(xxx)找到控件 III.xxx.setOnClickListener(this) 设置事件的监听 d.创建View.OnClickListener类型的全局变量 I.添加一个View.OnClickListener全局变量 private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.button5: Toast.makeText(MainActivity.this, "按钮五被点击了", Toast.LENGTH_SHORT).show(); break; default: break; } } }; II.通过findViewById(xxx)找到控件 III.xxx.setOnClickListener(onClickListener) 设置事件的监听 e.配置在布局文件中 a.在布局文件中给控制添加android:onClick="clickMe"属性 b.在对应的Activity中写一个方法 public void clickMe(View view){}f.注解IOC(Butterknife) 我这几天初学,感觉方法e特别好用,于是在写demo时呢,很多的时候我都会用e方法。对于f方法中说的注解,其实我现在还不是怎么会用~(但我觉得这种方法用起来的概率不是很大,在第三方框架里可能会用到吧,比如Butterknife) 在使用这几个方法时,也要注意一些细节问题:方法a,b这种情况,就要在布局文件中设置控件的一个属性:android:id="@+id/xxx";这里的加号一定不能省略;方法e,属性值一定要和方法名一样,一般复制就可以,并且后面的view不能删掉。
最后呢,我把demo贴上来,为了大家更加方便理解~
1.主界面的xml文件:
<RelativeLayout 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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="25dp" android:layout_marginTop="17dp" android:text="按钮一" /> <Button android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/button3" android:layout_alignBottom="@+id/button3" android:layout_marginLeft="30dp" android:layout_toRightOf="@+id/button2" android:text="按钮四" /> <Button android:id="@+id/button5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button3" android:layout_toLeftOf="@+id/button4" android:text="按钮五" /> <Button android:id="@+id/button6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button5" android:layout_toLeftOf="@+id/button4" android:onClick="clickMe" android:text="按钮六" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/button2" android:layout_toLeftOf="@+id/button4" android:text="按钮三" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/button1" android:text="按钮二" /></RelativeLayout>
2.MainActivity.java文件:
import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity implements OnClickListener{ //成员变量 private OnClickListener onClickListener = new OnClickListener() { @Override public void onClick(View v) { switch (v.getId()) { case R.id.button5: Toast.makeText(MainActivity.this, "按钮五被点击了", Toast.LENGTH_SHORT).show(); break; default: break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //给按钮添加点击事件 //在Activity当前关联的而已上面找控件 Button btnOne = (Button) findViewById(R.id.button1); //设置事件监听 匿名内部类 btnOne.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //当用户点击了这个按钮,就会执行该方法 Toast.makeText(MainActivity.this, "按钮一被点击了", Toast.LENGTH_SHORT).show(); } }); //----------------------------------------------------------- //------------内部类----------------------------------------------- Button btnTwo = (Button) findViewById(R.id.button2); btnTwo.setOnClickListener(new MyListener()); //----------------------------------------------------------- //--------------------让Activity实现 OnClickListener接口--------------------------------------- Button btnThird = (Button) findViewById(R.id.button3); Button btnFour = (Button) findViewById(R.id.button4); btnThird.setOnClickListener(this); btnFour.setOnClickListener(this); //----------------------------------------------------------- //--------------------让Activity实现 OnClickListener接口--------------------------------------- Button btnFive = (Button) findViewById(R.id.button5); btnFive.setOnClickListener(onClickListener); } //内部类 class MyListener implements OnClickListener { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "按钮二被点击了", Toast.LENGTH_SHORT).show(); } } //View:当前点击的是哪一个控件 @Override public void onClick(View v) { switch (v.getId()) { case R.id.button3: Toast.makeText(MainActivity.this, "按钮三被点击了", Toast.LENGTH_SHORT).show(); break; case R.id.button4: Toast.makeText(MainActivity.this, "按钮四被点击了", Toast.LENGTH_SHORT).show(); break; } } //按钮六的点击事件 public void clickMe(View view) { Toast.makeText(MainActivity.this, "按钮六被点击了", Toast.LENGTH_SHORT).show(); }}
在这里也是简单的写了一下这些事件监听的使用方法,在这里呢,也希望大家去自己动手简单的实现一下,把我的东西变成你们自己的东西,就需要你们去多动手啦~ OK了,如果这篇文章对于初学的你来说,比较有用,那么就关注一下我,我会持续更新内容的,我们共同进步!
阅读全文
0 0
- 小白带你学安卓——简单的事件监听
- 小白带你学安卓——Intent
- 小白带你学安卓——Acitivity的生命周期
- 小白带你学安卓——Activity的启动模式
- 小白带你学安卓——初识android
- 小白带你学安卓——UI设计
- 小白带你学安卓——工程目录结构及日志
- 小白带你玩VMware(一)虚拟机的创建
- 小白带你学习C++(2)This指针的引用
- 小白带你玩VMware(二)Linux系统的安装(以Linux-Mint为例)
- 事件监听的简单例子
- 简单的一些监听事件
- Web小练习-JavaScript事件的简单练习,监听鼠标的移动
- Python小白带小白初涉多进程
- Python小白带小白初涉多线程
- 【Unity3D ugui】简单控件的事件监听
- 实现简单的按钮事件监听
- Android——按钮的事件监听
- spring定时任务 Connection is read-only
- 什么是第三方rec
- Report Engine
- JQ获取到下拉框内选中的option值
- linux网络参数设置
- 小白带你学安卓——简单的事件监听
- 前端修炼之Css学习-1
- 计算自己活了多少岁
- Java 生成网页验证码几种方式
- Ducci Sequence UVA
- C#项目中操作Excel文件——使用NPOI库
- Fragment 通信
- Caffe: Could not find PROTOBUF Compiler(Profobuf 3.0 above)
- 计算机博弈——亚马逊棋(一)概述