Android监听Button和ImageButton控件的点击事件
一、onClick事件
Button和ImageButton都有一个onClick事件,通过自身的.setOnClickListener(OnClickListener)方法添加点击事件
所有的控件都有onClick事件,不仅仅是Button和ImageButton才有
通过点击事件的监听可以实现点击按钮之后要发生什么动作
二、操作的基本步骤:
第一步:声明一个私有变量,用于存储获取到的控件对象
第二步:初始化当前需要的控件(找到需要操作的那个控件)
第三步:设置Button的监听器,通过监听器实现我们点击Button要操作的事情
三、匿名内部类的方式实现监听onClick事件
package com.muke.textview_edittext; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity { private Button loginButton; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
loginButton = (Button) findViewById(R.id.button1); //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
loginButton.setOnClickListener(new OnClickListener() {
@Override
//在当前onClick方法中监听点击Button的动作
public void onClick(View v) {
System.out.println("我的Button被点击了");
}
});
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login" /> </LinearLayout>
四、外部类方式实现监听onClick事件
package com.muke.textview_edittext; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity { private Button loginButton;
private Button registerButton; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
loginButton = (Button) findViewById(R.id.button1);
registerButton = (Button) findViewById(R.id.button2); //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
loginButton.setOnClickListener(new MyOnClickListener(){
public void onClick(View v) {
super.onClick(v); //MyOnClickListener是父类,当点击这个按钮的时候会执行这个方法也会执行父类的onClick方法
Toast.makeText(MainActivity.this, "loginButton要执行了(子类)", 1).show();
}
}); registerButton.setOnClickListener(new MyOnClickListener(){
public void onClick(View v) {
super.onClick(v); //MyOnClickListener是父类,当点击这个按钮的时候会执行这个方法也会执行父类的onClick方法
Toast.makeText(MainActivity.this, "registerButton要执行了(子类)", 1).show();
}
});
}
} //OnClickListener是一个接口,所以使用implements 去实现
class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
System.out.println("loginButton和registerButton要执行了(父类)");
v.setAlpha(0.5F); //设置两个按钮loginButton和registerButton的透明度
} }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login" /> <Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/register" /> </LinearLayout>
五、接口方式实现监听onClick事件
package com.muke.textview_edittext; import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener{ private Button loginButton;
private Button imageButton; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //1、初始化当前所需要的控件(就是找到需要操作的那个控件,findViewById方法返回的是view对象,需要向下转型成Button对象)
loginButton = (Button) findViewById(R.id.button1);
imageButton = (Button) findViewById(R.id.imageButton1); loginButton.setOnClickListener(this);
imageButton.setOnClickListener(this);
} //2、设置Button的监听器,通过监听器实现我们点击Button要操作的事情
@Override
public void onClick(View v) {
System.out.println("第三种方式接口实现");
}
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" > <Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/login" /> <ImageButton
android:id="@+id/imageButton1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" /> </LinearLayout>
Android监听Button和ImageButton控件的点击事件的更多相关文章
- Android 使用代码主动去调用控件的点击事件(模拟人手去触摸控件)
使用代码主动去调用控件的点击事件(模拟人手去触摸控件) //View 可以是LinearLayout,Button,TextView View.performClick();
- Android简单的ListViewDemo及每个控件的点击事件
ListView是什么? ListView是一个 数据控件,可以展示从数据库中读取的数据.是.net3.5的新控件. 它比gridview更灵活,而且支持多种模板,支持分页. 文章地址 http:// ...
- 【WPF】监听WPF的WebBrowser控件弹出新窗口的事件
原文:[WPF]监听WPF的WebBrowser控件弹出新窗口的事件 WPF中自带一个WebBrowser控件,当我们使用它打开一个网页,例如百度,然后点击它其中的链接时,如果这个链接是会弹出一个新窗 ...
- android中RecyclerView控件实现点击事件
RecyclerView控件实现点击事件跟ListView控件不同,并没有提供类似setOnItemClickListener()这样的注册监听器方法,而是需要自己给子项具体的注册点击事件. 本文的例 ...
- 【MAUI】为 Label、Image 等控件添加点击事件
一.前言 已经习惯了 WPF.WinForm 中"万物皆可点击"的方式. 但是在 MAUI 中却不行了. 在 MAUI 中,点击.双击的效果,是需要通过"手势识别器&qu ...
- Android技能杂谈——如何优雅的处理控件的点击事件
首先分享一个最佳实践: 大家开发复杂一些的Android应用的时候常常会写一个BaseActivity或者BaseFragment,里面写上一些基本而公用的方法,比如监听网络状况.弹出对话框.设置ac ...
- Button控件的点击事件
Java的代码 主要重点: findViewById(); OnClickListener() package com.example.admin.myapplication; import andr ...
- 设置UITableView背景透明/监听cell左边的删除按钮的点击事件
_tableView = [[UITableView alloc] init]; _tableView.delegate = self; _tableView.dataSource = self; _ ...
- listview适配器中的控件的点击事件并传值
@Override public View getView(final int position, View convertView, ViewGroup parent) { // TODO Auto ...
随机推荐
- 一些常用的SQL查询语句
学习网站:http://www.w3cschool.cc/sql/sql-tutorial.html 一:查询所有表的属性 SELECT 'ALTER TABLE '+ CASE WHEN O.sch ...
- selenium实例
代码: # -*- coding:utf- -*- from selenium import webdriver driver = webdriver.PhantomJS() driver.get(' ...
- zoj Abs Problem
Abs Problem Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge Alice and Bob is pl ...
- hdu 1999 不可摸数 水题。
不可摸数 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- web打印
实现方法 引用jquery和,jqprint到您的页面 <script language="javascript" src="jquery-1.4.4.min.js ...
- Apache Commons CLI 开发命令行工具示例
概念说明Apache Commons CLI 简介 虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱.各种工具和系统都 提 ...
- 使用StarUML创建类图
使用StarUML创建类图 http://www.flyne.org/article/379 1.综述(What) StarUML是一种生成类图和其他类型的UML图表的工具.本文是一个使用StarUM ...
- Linux 运维工程师的十个基本技能点
本人是linux运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧. 说到工具,在行外可以说是技能,在行内我们一般称为工具,就是运维必须要掌握的工具.我就大概列出这几方面,这样入门就基本没问 ...
- 关于header('location:url')的一些说明,php缓冲区
网上搜索header('location:url')的用法,得到如下三个结论: 1. location和“:”号间不能有空格,否则会出错. 2. 在用header前不能有任何的输出. 3. heade ...
- Vi编辑器下使用分屏显示【已自己验证所有】
:new 水平分割出一个新窗口 :vnew,:vne 垂直分割出一个新窗口 :new+文件路径/文件名; 在新的水平分屏中 载入/新建 文件.[文件存在则载入,不存在则在指定的路径新建,下同] :vn ...