Android事件处理
来源:互联网 发布:淘宝有客服投诉电话 编辑:程序博客网 时间:2024/04/27 06:14
基于监听的事件处理
我们知道在Android中,事件处理模型包括事件、事件源、事件监听器。事件就是用户的操作了,比如说点击、双击……。事件源是这个事件发生在什么地方,比如我们点击一个按钮,那么事件源就是这个按钮。事件监听器就是由哪个类或模块来处理这个事件。
根据事件监听器类在内部还是在外部,抑或是普通内部还是匿名内部,我们把事件监听处理分成了以下5种,其中匿名内部类是我们最常用的。
1.普通内部类作为事件监听器类
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); textView = (TextView) findViewById(R.id.textView1); button.setOnClickListener(new MyClickListener()); } class MyClickListener implements View.OnClickListener { @Override public void onClick(View v) { textView.setText("按钮被单击了"); } }
2.匿名内部类作为事件监听器类
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); textView = (TextView) findViewById(R.id.textView1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { textView.setText("按钮被单击了"); } });
3.Activity本身作为事件监听器类
由于要在Activity中实现onClick(View V)函数,所以Mainactivity要记得implements OnClickListener
public class MainActivity extends ActionBarActivity implements OnClickListener { private Button button = null; private TextView textView = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); textView = (TextView) findViewById(R.id.textView1); button.setOnClickListener(this); } @Override public void onClick(View v) { textView.setText("按钮被单击了"); }
4.外部类作为事件监听器类
MainActivity.javabutton.setOnClickListener(new MyClickListener(textView));MyClickListener.javapublic class MyClickListener implements OnClickListener { private TextView tv; public MyClickListener(TextView textView){ this.tv = textView; } @Override public void onClick(View v) { tv.setText("按钮被单击了"); }}
5.直接绑定到标签
<Button ...... android:onClick="click" android:text="Button" />//MainActivity.java额外添加下面一个函数 public void click(View V){ textView.setText("按钮被单击了"); }
我们在应用中用到最多的应该是匿名内部类的形式吧!
基于回调的事件处理
回调机制与监听机制都很好理解,在这里需要注意的是基于回调的事件传播。
红色代表的是主Acitivity,黄色表示Activity上面的Button,白色表示Button上面绑定的事件。箭头就像用户触摸手机屏幕而产生的事件。
从上图中我们很容易知道,事件传播的路径是 onKeyListener->Button->Activity, 前提是回调函数的返回值都是false
这里我刚上传了李刚 疯狂Android讲义 中关于此内容的代码,大家可以查看我的资源下载。
0 0
- 【Android】 Android 事件处理
- Android事件处理之处理键盘事件
- Android事件处理
- Android事件处理流程
- Android事件处理
- Android事件处理分析
- Android事件处理分析
- Android事件处理
- Android事件处理分析
- Android事件处理流程
- Android事件处理分析
- [转]Android事件处理
- Android 3G 事件处理
- Android事件处理分析
- Android UI事件处理
- Android UI事件处理
- Android 事件处理
- Android事件处理分析
- iOS开发网络篇—数据缓存
- dispatch API简单总结
- 8.15作业
- Java Semaphore 信号量
- netty学习之二:ByteBuf解读
- Android事件处理
- iOS开发网络篇—使用ASI框架进行文件下载
- maven repository
- horizontalscrollview
- Android优化笔记
- 通信阶段的总结
- 【转】vc++6.0 字节定义和字节转换。
- ASP.NET合并两个相关联的DataTable
- iOS开发拓展篇—UIDynamic(简单介绍)