Mono for Android or Android 中的事件怎么写!
来源:互联网 发布:现在淘宝网什么好卖 编辑:程序博客网 时间:2024/06/09 06:21
今天就来说一说andorid的事件,作为自己养成写博客的开端。
直接入题:
安卓中的事件大致分为两类,基于监听和基于回调;
一、基于监听的事件
首先来说下事件处理过程中所包含的三个概念:事件源、事件、事件监听;
事件源:也就是事件发生的场所,在什么地方发生的,通常就是各个组件,比如按钮、菜单等;
事件:也就是发生了什么事情,比如点击、滑动等;
事件监听器:负责监听事件源所发生的事件;
事件监听的处理机制是一种委派式(Delegation)的处理方式:事件源将整个事件的处理委托给特定的对象,这个对象也就是事件监听器;当事件源发生特定事件就通知所委托的事件监听器,由事件监听器进行处理;
例:
Button btn = FindViewById<Button>(Resource.Id.MyButton);btn.Click+=btn_Click; void btn_Click(object sender, EventArgs e){ btn.Text = "点击了Button"}
上面的写法是利用c#的事件委托来实现的,在C#中可以使用像在Java中的事件监听形式;
Button btn = FindViewById<Button>(Resource.Id.MyButton);btn.SetOnClickListener(new MyButtonListener());public class MyButtonListener : Java.Lang.Object,View.IOnClickListener{}这种形式就像原汁原味的事件监听方式。 上面的btn则为事件源,事件是Click事件,事件监听器就是MyButtonListener。
因为在c#里面没有匿名内部类这个东西(貌似是没有),所以常用委托的方式来实现事件监听。而在java代码中则通常使用匿名内部类来作为事件监听器,比如:
btn.setOnClickListener( new OnClickListener(){ @override public void onClick(View v){ btn.setText("点击了Button"); } });
上面就可以简单对比下在c#和在java中对一个按钮实现事件监听;
二、基于事件回调
我们通常认为事件监听机制是一种委托式的事件机制,那么回调机制则恰好相反:对于基于监听的处理方式来说,事件源跟事件监听器是分离的,而对于基于回调的处理方式,事件源跟监听器是同一的,或者说事件监听器就不存在。当事件源被激发某个事件的时候,事件源自己的特定方法将会负责处理该事件;
我们无法为某个对象动态添加方法,因此只能继承组件类,并重写该类的事件处理方法来实现。
</pre><pre name="code" class="csharp">public Class MyButton : Button { //重写事件方法 public override void OnClick(View v) { }}
额,大致就是类似这样的吧,乱写写,没怎么排版,随性而起。
注意:andorid的事件处理机制保证基于监听的事件监听器会被优先触发————此处就会涉及到事件传播的概念
最近重新写了一篇博客:http://blog.csdn.net/supluo/article/details/42914759
- Mono for Android or Android 中的事件怎么写!
- mono for android
- mono for android 图片
- mono for android 样式
- Mono for Android
- 什么是Mono for Android?
- Mono for Android
- Mono For Android
- Xamarin Mono For Android
- Mono for Android基本的弹提示框事件
- mono for android播放声音
- mono for Android 之StartActivityForResult
- Mono for Android 之NFC
- Mono for Android 视频基础教程
- Mono For Android离线激活
- mono for Android截获短信
- Android for mono 科学计算器
- mono for android开发1
- Hinernate一对多(难点)
- 史上最全计算机毕业设计题目4(10万套,大部分全国唯一)
- js实现翻页效果
- 用BeautifulSoup分析html
- Error executing aapt: Return code -1073741819
- Mono for Android or Android 中的事件怎么写!
- C语言之链表操作
- JSP include 指令
- Every Teardrop Is A Waterfall——Coldplay
- ARM CPU总结
- Java 学习 第二章基础语法
- 算法导论学习笔记之二--分而治之(divide-and-conquer approach)
- java中的hashtable和hashmap区别
- “一心一意”的多线程