栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android编程自定义View时添加自己的监听器示例

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android编程自定义View时添加自己的监听器示例

本文实例讲述了Android编程自定义View时添加自己的监听器。分享给大家供大家参考,具体如下:

监听器在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;

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
  }
  @Override
  protected void onDraw(Canvas canvas) {
    // TODO Auto-generated method stub
    super.onDraw(canvas);
  }
  @Override
  public boolean onTouchEvent(MotionEvent event) {
    // TODO Auto-generated method stub
    int 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中的定义



  


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;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listener);
    view = (MyView) findViewById(R.id.my_view);
    view.setonDownActionListener(new onDownActionListener() {
      @Override
      public void onDown(int x, int y) {
 // TODO Auto-generated method stub
 System.out.println("down x = " + x + " y = " + y);
      }
    });
    view.setonMoveActionListener(new onMoveActionListener() {
      @Override
      public void onMove(int x, int y) {
 // TODO Auto-generated method stub
 System.out.println("move x = " + x + " y = " + y);
      }
    });
    view.setonUpActionListener(new onUpActionListener() {
      @Override
      public void onUp(int x, int y) {
 // TODO Auto-generated method stub
 System.out.println("up x = " + x + " y = " + y);
      }
    });
  }
}

打印消息

说明我们自定义的监听器已经起作用了。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android控件用法总结》、《Android开发入门与进阶教程》、《Android视图View技巧总结》、《Android编程之activity操作技巧总结》、《Android数据库操作技巧总结》及《Android资源操作技巧汇总》

希望本文所述对大家Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/156619.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号