首页 > 代码库 > 从零开始学android<android事件的处理方式.二十四.>
从零开始学android<android事件的处理方式.二十四.>
在android中一共有 多种事件,每种事件都有自己相对应的处理机制
如以下几种
1 | 单击事件 | View.OnClickListener | public abstract void onClick (View v) | |
2 | 单击事件 | View.OnLongClickListener | public abstract boolean onLongClick (View v) | |
3 | 键盘事件 | View.OnKeyListener | public abstract boolean onKey (View v, int keyCode, KeyEvent event) | |
4 | 焦点事件 | View.OnFocusChangeListener | public abstract void onFocusChange (View v, boolean hasFocus) | 当焦点发生改变时触发 |
5 | 触摸事件 | View.OnTouchListener | public abstract boolean onTouch (View v, MotionEvent event) | |
6 | 创建上下文菜单 | View.OnCreateContextMenuListener | public abstract void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) | 当上下文菜单创建时触发 |
监听方法
1 | public void setOnClickListener(View.OnClickListener l) | 普通 | |
2 | public void setOnLongClickListener(View.OnLongClickListener l) | 普通 | |
3 | public void setOnKeyListener(View.OnKeyListener l) | 普通 | |
4 | public void setOnFocusChangeListener(View.OnFocusChangeListener l) | 普通 | |
5 | public void setOnTouchListener(View.OnTouchListener l) | 普通 | |
6 | public void setOnCreateContextMenuListener( View.OnCreateContextMenuListener l) | 普通 |
下面以Onclick单机事件为例 说明android中处理事件的三种方式
1.内部类处理事件
2.匿名内部类处理事件
3.数据源处理事件
例子如下:
XML文件
<span style="font-size:18px;"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="60dp" android:text="方式一" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button1" android:layout_below="@+id/button1" android:layout_marginTop="44dp" android:text="方式二" /> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/button2" android:layout_below="@+id/button2" android:layout_marginTop="35dp" android:onClick="click" android:text="方式三" /> </RelativeLayout> </span>
JAVA文件
<span style="font-size:18px;">package com.example.actionoperator; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; public class MainActivity extends Activity { public Button button1, button2, button3; // 获取BubuttonOnClickListener对象 ButtonOnClickListener click =new ButtonOnClickListener(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); super.setContentView(R.layout.activity_main); button1 = (Button) this.findViewById(R.id.button1); button2 = (Button) this.findViewById(R.id.button2); button3 = (Button) this.findViewById(R.id.button3); // 使用内部类进行处理 button1.setOnClickListener(new MyListener()); // 使用匿名内部类进行处理 button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "匿名内部类的方法实现方法监听处理", 2).show(); } }); // 使用数据源的方法进行处理,可以讲所有的单机事件都注册在这个click上进行处理 button3.setOnClickListener(click); } class ButtonOnClickListener implements OnClickListener { public void onClick(View v){ // 读者可以在这里设置 switch case 语句对传来参数的ID进行判断 实现多个事件的同一方法处理 if (v==button3) { Toast.makeText(MainActivity.this, "使用数据源实现方法监听处理", 2).show(); } } } class MyListener implements OnClickListener { @Override public void onClick(View view) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "内部类的方法实现方法监听处理", 2).show(); } } } </span>
最终效果
所有事件的处理方法都基本上是以上的三种处理机制,希望读者都要认真掌握
下节预报:
Dialog对话框组件
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。