Android——UI事件的处理机制(基于监听器)
1.普通内部类(常用)
xml
<Button
android:hint="reset"
android:layout_columnWeight="1"
android:id="@+id/reset"/>
java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridexlayout);
//添加监听器
//监听器 本身是一个接口,需要写实现类
Button bt_reset = (Button)findViewById(R.id.reset);
//第一种 设置监听器的实现类的实例
bt_reset.setOnClickListener(new ResetButtonClickListen());
}
//1.用内部类实现监听器的接口
private class ResetButtonClickListen implements View.OnClickListener
{
public void onClick(View v)
{
Button bt = (Button)v;
String str = bt.getText().toString();
//在内部类里调用外部类的实例:外部类的类名.this
Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show();
}
}
}
2.匿名内部类
java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridexlayout);
Button bt_reset = (Button)findViewById(R.id.reset);
//第二种 匿名内部类
bt_reset.setOnClickListener(new View.OnClickListener(){
public void onClick(View v)
{
Button bt = (Button)v;
String str = bt.getText().toString();
//在内部类里调用外部类的实例:外部类的类名.this
Toast.makeText(MainActivity.this,str+"click",Toast.LENGTH_LONG).show();
}
});
}
3.外部类
java
public class MainActivity extends AppCompatActivity {
//public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//bt_reset.setOnClickListener(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridexlayout);
//添加监听器
//监听器 本身是一个接口,需要写实现类
Button bt_reset = (Button)findViewById(R.id.reset);
//第三种 外部类
//bt_reset.setOnClickListener(new WaibuListener());
}
}
java2
package com.example.chenshuai.test322; import android.view.View;
import android.widget.Button; /**
* Created by chenshuai on 2016/3/26.
*/
public class WaibuListener implements View.OnClickListener {
public void onClick(View v)
{
Button bt = (Button)v;
String str = bt.getText().toString(); }
}
4.直接绑到标签上
xml
<Button
android:hint="send"
android:layout_columnWeight="1"
android:onClick="onclick"/>
java
public class MainActivity extends AppCompatActivity {
//public class MainActivity extends AppCompatActivity implements View.OnClickListener {
//bt_reset.setOnClickListener(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridexlayout);
//添加监听器
//监听器 本身是一个接口,需要写实现类
Button bt_reset = (Button)findViewById(R.id.reset);
//传递的View参数 是触发这个事件视图实例(在这里是Button)
public void onclick(View v)
{
Button bt = (Button)v;
String str = bt.getText().toString();
Toast.makeText(this,str+"Button click",Toast.LENGTH_LONG).show();
}
}
5.Avtivity直接实现
java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
bt_reset.setOnClickListener(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridexlayout);
//添加监听器
//监听器 本身是一个接口,需要写实现类
Button bt_reset = (Button)findViewById(R.id.reset);
}
}
Android——UI事件的处理机制(基于监听器)的更多相关文章
- Android触摸事件的分发机制
---恢复内容开始--- 一.MotionEvent : ACTION_DOWN(下按事件).ACTION_UP(松开事件).ACTION_MOVE(移动事件) 二.三大函数 1.dispatchTo ...
- android的事件分发传递机制
事件的分发与传递最重要的三个处理方法是 dispatchTouchEvent onInterceptTouchEvent onTouchEvent 综合来说事件的 传递是由外层向里层传递,而处理是从里 ...
- 一张图让你明确Android Touch事件的传递机制
- (转)Android Touch事件传递机制
-----来源:http://www.trinea.cn/android/touch-event-delivery-mechanism/ 介绍Android Touch事件的传递机制. 不少朋友私信问 ...
- Android Touch事件传递机制具体解释 上
尊重原创:http://blog.csdn.net/yuanzeyao/article/details/37961997 近期总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,曾经 ...
- Android Touch事件传递机制详解 上
最近总是遇到关于Android Touch事件的问题,如:滑动冲突的问题,以前也花时间学习过Android Touch事件的传递机制,可以每次用起来的时候总是忘记了,索性自己总结一下写篇文章避免以后忘 ...
- Android触摸事件的应用
前言 上一篇讲了Android触摸事件的传递机制,具体可以看这里 初识Android触摸事件传递机制.既然知道Android中触摸事件的传递分发,那么它能解决什么样的问题,在我们实际开发中如何应用,这 ...
- Android Touch事件传递机制 一: OnTouch,OnItemClick(监听器),dispatchTouchEvent(伪生命周期)
ViewGroup View Activity dispatchTouchEvent 有 有 有 onInterceptTouchEvent 有 无 无 onTouchEvent 有 有 有 例 ...
- Android基础新手教程——3.1 基于监听的事件处理机制
Android基础新手教程--3.1.1 基于监听的事件处理机制 标签(空格分隔): Android基础新手教程 本节引言: 第二章我们学习的是Android的UI控件,我们能够利用这些控件构成一个精 ...
随机推荐
- Win10系统开启Linux Bash命令行
Win10系统开启Linux Bash命令行 导读 在Build2016上微软为了拉拢开发者发了个大招,那就是Win10一周年更新集成原生Linux Bash命令行功能,这将允许开发者或用户在Wind ...
- [Grunt + AngularJS] Using ng-annotate for min-safe AngularJS
When you minify your code with a tool like Uglify, the resulting minified file will rename variables ...
- asp与aspx有什么区别
asp与aspx哪个好? 最佳答案 你如果想知道哪个好,我想很多人第一个想法就是aspx好. 这很好理解,就像楼上的朋友说的,aspx是asp的升级版. 但是aspx相对于asp的升级可以说是从根本上 ...
- Python网络爬虫 - 一个简单的爬虫例子
下面我们创建一个真正的爬虫例子 爬取我的博客园个人主页首页的推荐文章列表和地址 scrape_home_articles.py from urllib.request import urlopen f ...
- java使用链栈实现数制转换
java实现链栈在前面有所介绍:http://www.cnblogs.com/lixiaolun/p/4644141.html 将前面java实现链栈的代码稍作修改: package linkedst ...
- 华为P6-C00电信版,刷机总是失败? FAIL
关于这个刷机失败的问题,我只想说一点: 华为P6-C00电信版刷机时,不是任意版本都可以刷到任意版本的.我只往上刷过,那就是华为的升级文档中有说明:“只有以下版本才可以升级到此版本”. 如果你的手机的 ...
- C++ bool和string转换
直接贴代码吧.用g++能够编译.測试ok #include <iostream> #include <sstream> using namespace std; int mai ...
- 【Redis】windows环境下安装redis服务器,并配置php的redis扩展
win7示例: 1.下载Redis服务器 : https://github.com/dmajkic/redis/downloads:(随便下,建议不要太老的) 2.在D:\phpStudy\ 新建Re ...
- 导入项目出现: Unable to resolve target ‘android-10′ 解决办法
进入到android项目根目录下,打开项目文件project.properties ,修改 target=android-10 的值.把10改为当前虚拟机API level的版本即可.我这里改为17 ...
- 各种Map的区别,想在Map放入自定义顺序的键值对
今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排 ...