软件编程
位置:首页>> 软件编程>> Android编程>> Android编程自定义View时添加自己的 * 示例

Android编程自定义View时添加自己的 * 示例

作者:dztai  发布时间:2023-08-20 11:58:27 

标签: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;
/**
* 在自定义的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中的定义


<?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;
 @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编程自定义View时添加自己的 * 示例

说明我们自定义的 * 已经起作用了。

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

来源:http://blog.csdn.net/deng0zhaotai/article/details/21456791

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com