android事件处理
来源:互联网 发布:阿里云缩写 编辑:程序博客网 时间:2024/06/05 18:07
一.android事件处理的两种途径
1:基于监听
2:基于回调
某些特定的事件无法用回调的方法。
二.基于监听的方法
比较常用的方法
1:内部类
使用内部类就是在类的内部定义一个实现了某个onxxxlistener接口的类,然后将这个内部类的实例注册给事件源。
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到事件源
Button btn = (Button) findViewById(R.id.btn);
//绑定事件监听器
btn.setOnClickListener(new MybtnOnclickListener());
}
//使用内部类
public class MybtnOnclickListener implements OnClickListener {
@Override
public void onClick(View v) {
// do something you want to do
}
}
}
2:使用匿名内部类
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找到事件源
Button btn = (Button) findViewById(R.id.btn);
//绑定事件监听器
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do something you want to do
}
});
}
}
3:使用XML绑定
<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"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="MyButtonCilcked"/> 此处绑定
</RelativeLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void MyButtonCilcked(View v)
{
//do something you want to do
}
}
三:基于回调的方法
不用事件监听器,事件源本身来处理事件,多用于自定义的view,重写了父类的onxxxlistener方法。
常用回调方法有:
onKeyDown //按键按下
onKeyLongPress //长按键
onKeyShortcut //键盘快捷键按下
onKeyUp //松开按键
onTouchEvent //触摸屏事件
onTrackballEvent //轨迹球事件
<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"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="MyButtonCilcked"/>
<chao.he.eventtest.MyButton //用我们自定义的view
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</RelativeLayout>
public class MyButton extends Button {
public MyButton(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
//重写父类的onTouchEvent方法
@Override
public boolean onTouchEvent(MotionEvent event) {
//do something you want to do
return true;
}
}
基于回调方法的事件传播取决于回调事件的返回值,如果返回false则事件继续向外传播,如返回true则事件停止。
一般先执行监听器绑定的事件,然后执行在view中定义的回调事件,最后执行Activity中的回调事件。
- 【Android】 Android 事件处理
- Android事件处理之处理键盘事件
- Android事件处理
- Android事件处理流程
- Android事件处理
- Android事件处理分析
- Android事件处理分析
- Android事件处理
- Android事件处理分析
- Android事件处理流程
- Android事件处理分析
- [转]Android事件处理
- Android 3G 事件处理
- Android事件处理分析
- Android UI事件处理
- Android UI事件处理
- Android 事件处理
- Android事件处理分析
- 黑马程序员———java高级特性之枚举
- UITabBarItem 更改图像的高度和宽度
- 医院管理系统项目功能实现(二)
- about code
- Effective Java:创建和销毁对象
- android事件处理
- android下的linux内核编译
- Java线程同步与死锁、生产者消费者模式以及任务调度等
- 关于UTF-8与UTF-8+BOM的问题
- 忍不住转一个:这是迄今为止对职业尊严最好的诠释!
- java 文件的上传下载
- iOS UISearchBar开发
- Contains Duplicate
- iOS 图标尺寸规范,记录下来方便使用