文档章节

Android攻城狮—监听(按钮)点击事件

iBazinga
 iBazinga
发布于 2016/11/10 18:47
字数 552
阅读 20
收藏 0
点赞 0
评论 0

onClick事件

  • 所有的控件都有一个onClick事件,包括Button和ImageButton。
    • 通过自身的.setOnClickListener(OnClickListener)方法添加点击事件
  • 通过点击事件的监听可以实现点击按钮之后要发生什么动作

监听事件的实现方法

  • 匿名内部类的实现
  • public class MainActivity extends Activity {
    /*
     * 第一种方式:匿名内部类
     */
        private Button wordButton;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		/*
    		 * 1.初始化当前所需的一个控件
    		 * findViewById --返回的是一个View的对象
    		 * 
    		 * 2.设置Button的监听器,通过监听器实现点击Button所要操作的事情
    		 */
    		wordButton = (Button)findViewById(R.id.button1);
            //之所以用(Button)是因为findViewById返回的是一个View的对象,"View是所有控件的一个父类"
    
    		wordButton.setOnClickListener(new OnClickListener() {
    			
    			@Override
    			public void onClick(View arg0) {
    				// 在当前onClick方法中监听Button的动作
    				System.out.println("我的按钮被点击了");
    			}
    		});
    		
    	}
    }
    

    运行结果>>监听到点击事件后执行类中的方法(即控制台输出“我的按钮被点击了”)。

  • 独立类的实现
  • /*
     *第二种方式:独立类
     */
    public class MainActivity extends Activity {
    	//Button对象
    	private Button wordButton;
    	private ImageButton imageButton;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		wordButton = (Button)findViewById(R.id.button1);
    		wordButton.setOnClickListener(new MyClick() {
    			//调用父类的OnClick
    			@Override
    			public void onClick(View v){
    				super.onClick(v);
    				Toast.makeText(MainActivity.this,"wordbutoon", 1).show();
    			}
    
    		});
    		
    		imageButton = (ImageButton)findViewById(R.id.imageButton1);
    		imageButton.setOnClickListener(new MyClick() {
    			//调用父类的OnClick
    			@Override
    			public void onClick(View v){
    				super.onClick(v);
    				Toast.makeText(MainActivity.this,"imagebutoon", 1).show();
    			}
    
    		});
    
    	}	
    }
    
    /*
     * 独立类
     */
    class MyClick implements  OnClickListener{
    
    	@Override
    	public void onClick(View v) {
    		// 让所有试用当前外部类的点击事件的按钮都要做出一个动作(改变透明度)
    		v.setAlpha(0.5f);
    	}
    }
    //[实际应用]:需求让多个按钮实现同一种动作的时候,可用此方法,简化代码。
    

    运行结果>>监听到按钮点击事件后实现独立类中的方法(即点击按钮,透明度发生改变)。

  • 实现接口的方式来实现
  • /*
     * 第三种方式:接口
     */
    public class MainActivity extends Activity implements OnClickListener{
    	
    	private Button wordButton;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		wordButton = (Button)findViewById(R.id.button1);
    		wordButton.setOnClickListener(this);
    	}
    	
    
    	@Override
    	public void onClick(View arg0) {
    		Log.i("tog","第三种方式"); //Log用来打印日志
    	}	
    }
    

    运行结果>>监听到按钮点击事件后实现方法(即打印日志)。

© 著作权归作者所有

共有 人打赏支持
iBazinga
粉丝 11
博文 127
码字总数 42315
作品 0
深圳
程序员
监听android:drawableLeft和android:drawableRight点击事件

监听android:drawableLeft和android:drawableRight点击事件 Android官方没有提供对android:drawableLeft和android:drawableRight点击事件的监听,但有些情况下,如下面的搜索栏, 需要在用户...

zhangphil ⋅ 04/17 ⋅ 0

理解 Android Hook 技术以及简单实战

什么是 Hook Hook 英文翻译过来就是「钩子」的意思,那我们在什么时候使用这个「钩子」呢?在 Android 操作系统中系统维护着自己的一套事件分发机制。应用程序,包括应用触发事件和后台逻辑处...

猴亮屏 ⋅ 04/17 ⋅ 0

Activity与对话框类的数据传递

在Android开发中,有时候我们希望能够在Activity和对话框之间进行数据传递。例如,点击Activity的某个设置按钮,然后弹出一个设置对话框,当我们在对话框中输完参数并点击“确定”按钮后,所...

JxWee ⋅ 2013/12/04 ⋅ 0

项目需求讨论 - WebView下拍照及图片选择功能

前言: 如果觉得掘金上看图片放大看不清楚,可以跳到另外的同步发布的链接看,放大图片下部有个可以查看原图功能,很清楚:项目需求讨论 - WebView下拍照及图片选择功能 现在很多app里面,都...

青蛙要fly ⋅ 今天 ⋅ 0

Android 5.1 Phone 挂断电话流程分析

写在前面的话 本文主要分析Android挂断电话的流程,研究的代码是Android 5.1的,以CDMA为例,GSM同理。 挂断电话主要分两种情况: } } Instructs this {@code Call} to disconnect. Instruc...

linyongan ⋅ 2015/08/29 ⋅ 0

[译] 在 SnackBar,Navigation 和其他事件中使用 LiveData(SingleLiveEvent 案例)

原文地址:LiveData with SnackBar, Navigation and other events (the SingleLiveEvent case) 原文作者:Jose Alcérreca 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… ...

Android_开发者 ⋅ 前天 ⋅ 0

咦,我的屏幕脏了——Android悬浮窗初探

作者:不洗碗工作室 - lszr 文章出处:Android声音相关总结 版权归作者所有,转载请注明出处 很多时候,你会想在你的屏幕上加些东西, 比如一个ingress游戏的画图工具,或者在小窗播放视频的同...

不洗碗工作室 ⋅ 04/23 ⋅ 0

为了监视快递小哥,我做了一个小程序!

我感觉我可以在电脑上查看快递小哥离我有多远了! 应用演示地址: http://geomap.wilddogapp.com/ 源码下载: http://git.oschina.net/chengxinxin/wildGeo 下载到本地解压后即可运行。由于流量...

郭雅夫人 ⋅ 2017/11/29 ⋅ 0

高薪诚聘 攻城狮 程序猿!(推荐人才现金奖励)

高大上滴智能家居IT公司招人啦!招人啦!!招人啦!!! 本公司集生产、研发、销售于一体、主营安防监控类产品,目标欧美市场,现正处于快速增长阶段,高薪酬、高激励,无论你是攻城狮、或程...

tt勇者无惧 ⋅ 今天 ⋅ 0

Android 性能优化之TraceView的使用

原址 TraceView简介 工欲善其事,必先利其器。要想分析Android的性能问题,比如卡顿了之类的,那么就必需掌握TraceView工具的使用。 TraceView 是 Android SDK 中内置的一个工具,它可以加载...

u010164190 ⋅ 04/26 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vue-cli是什么?

vue-cli是什么? vue-cli 是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,分为vue init webpack-simple 项目名 和vue init webpack 项目名 两种。 当然首先你的安装vue,webpack...

韦姣敏 ⋅ 33分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 39分钟前 ⋅ 0

java 线程池

概述 减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务 可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为因为消耗过多的内存,而把服务器累趴下(...

轨迹_ ⋅ 44分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 56分钟前 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 57分钟前 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

VCS仿真生成vpd文件(verilog)

VCS仿真生成vpd文件(verilog): https://www.cnblogs.com/OneFri/p/5987673.html SYNOPSYS VCS常用命令使用详解 https://blog.csdn.net/hemmingway/article/details/49382551 DVE是synopsys公......

whoisliang ⋅ 今天 ⋅ 0

Spring Boot启动配置原理

几个重要的事件回调机制 配置在META-INF/spring.factories ApplicationContextInitializer SpringApplicationRunListener 只需要放在ioc容器中 ApplicationRunner CommandLineRunner 启动流程......

小致dad ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部