标签:风飞雪未扬 从零开始学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)
|
普通
|
|
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>
<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对话框组件
从零开始学android<android事件的处理方式.二十四.>,布布扣,bubuko.com
从零开始学android<android事件的处理方式.二十四.>
标签:风飞雪未扬 从零开始学android android事件的处理方法 三种处理事件监听的方法
原文地址:http://blog.csdn.net/u013616976/article/details/38622071