Android自定义View时添加自己的监听器
来源:互联网 发布:知乎匿名提问没人回答 编辑:程序博客网 时间:2024/05/11 05:59
监听器在Java中非常常用,在自定义控件时可能根据自己的需要去监听一些数据的改变,这时就需要我们自己去写监听器,Java中的监听器实际上就是C++中的回调函数,在初始化时设置了这个函数,由某个事件触发这个函数被调用,两个类之间的数据通信也可以通过监听器来实现。要定义监听器就要先定义一个接口,具体功能由设置监听器的类去实现
关键代码实现
package com.example.listviewitem.widgets;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;/** * 在自定义的View中定义三个监听器 */public class MyView extends View {private OnDownActionListener mDown = null;private OnMoveActionListener mMove = null;private OnUpActionListener mUp = null;public MyView(Context context) {super(context);}public MyView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubint x, y;if (event.getAction() == MotionEvent.ACTION_DOWN) {x = (int) event.getX();y = (int) event.getY();if (mDown != null) {mDown.OnDown(x, y);}return true; // 只有返回true这个控件的move和up才会响应} else if (event.getAction() == MotionEvent.ACTION_MOVE) {x = (int) event.getX();y = (int) event.getY();if (mMove != null) {mMove.OnMove(x, y);}} else if (event.getAction() == MotionEvent.ACTION_UP) {x = (int) event.getX();y = (int) event.getY();if (mUp != null) {mUp.OnUp(x, y);}}return super.onTouchEvent(event);}// 为每个接口设置监听器public void setOnDownActionListener(OnDownActionListener down) {mDown = down;}public void setOnMoveActionListener(OnMoveActionListener move) {mMove = move;}public void setOnUpActionListener(OnUpActionListener up) {mUp = up;}// 定义三个接口public interface OnDownActionListener {public void OnDown(int x, int y);}public interface OnMoveActionListener {public void OnMove(int x, int y);}public interface OnUpActionListener {public void OnUp(int x, int y);}}自定义View在xml中的定义
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <com.example.listviewitem.widgets.MyView android:id="@+id/my_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/area_point_bg" /></LinearLayout>Activity中设置监听器
package com.example.listviewitem;import com.example.listviewitem.widgets.MyView;import com.example.listviewitem.widgets.MyView.OnDownActionListener;import com.example.listviewitem.widgets.MyView.OnMoveActionListener;import com.example.listviewitem.widgets.MyView.OnUpActionListener;import android.app.Activity;import android.os.Bundle;public class TestListener extends Activity {private MyView view;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.listener);view = (MyView) findViewById(R.id.my_view);view.setOnDownActionListener(new OnDownActionListener() {@Overridepublic void OnDown(int x, int y) {// TODO Auto-generated method stubSystem.out.println("down x = " + x + " y = " + y);}});view.setOnMoveActionListener(new OnMoveActionListener() {@Overridepublic void OnMove(int x, int y) {// TODO Auto-generated method stubSystem.out.println("move x = " + x + " y = " + y);}});view.setOnUpActionListener(new OnUpActionListener() {@Overridepublic void OnUp(int x, int y) {// TODO Auto-generated method stubSystem.out.println("up x = " + x + " y = " + y);}});}}打印消息
说明我们自定义的监听器已经起作用了。
1 0
- Android自定义View时添加自己的监听器
- Android自定义View时添加自己的监听器
- Android自定义View时添加自己的事件监听器
- Android添加自定义View的方法
- Android的ScrollView中添加自定义View
- 为自己的自定义View添加额外属性
- 为自己的button添加一个监听器
- 为android自定义View控件添加自定义的属性
- Android自定义View 属性添加
- 如何自定义自己的VIEW
- android 自定义view添加自定义xml属性
- Android自定义ViewGroup添加组合控件的子view
- 添加自定义View的Widget
- android 自定义View(三) 自定义ViewGroup之可添加的view
- android自定义listview,添加监听器,解决屏幕滑动组件状态干扰的问题checkbox
- android自定义listview,添加监听器,解决屏幕滑动组件状态干扰的问题checkbox ...
- Android 自定义listview 添加监听器 解决屏幕滑动组件状态干扰的问题checkbox
- 【Tech-Android-View】给自定义view添加自定义属性
- 特征变换(7)总结
- RHEL环境搭建--Nginx|Tomcat|Java|Dubbo|RabbitMQ|Redis|Nexus|MySQL
- Linux学习记录--工作管理与进程管理
- Matlab中调用CUDA加速的方法……
- 在Web中集成Kettle
- Android自定义View时添加自己的监听器
- 跟我一起写makefile(1、2)
- MVC3中给标签添加属性
- 对门控系统的攻击面检查
- 滑动窗口机制
- Java运算符
- Qt实现NTP时钟同步
- django+python创建第一个web项目
- jquery ajax 加载超时提示