Unity和Android 事件函数的比较

来源:互联网 发布:mac lion系统下载 编辑:程序博客网 时间:2024/05/18 05:50

做过Unity的都知道,unity关于对象有一整套完善的事件函数,在使用时,这些方法是需要挂在目标对象上的,如下:


unity自己的: onmousedown onmouseup onmousedrag


ngui: ondragstart ondragend ondrag onclick onpress


那么在Android开发中也有自己的一套事件函数,这个函数是被封装在SimpleOnGestureListener这个类中
具体使用如下:

这里写图片描述


下面是界面的代码:

<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" >    <TextView        android:id="@+id/tv01"        android:layout_width="200dp"        android:layout_height="200dp"        android:background="#001100"        android:text="@string/hello_world" /></RelativeLayout>

下面是Activity代码:

package com.example.tiantian;import android.os.Bundle;import android.app.Activity;import android.util.Log;import android.view.GestureDetector;import android.view.ContextMenu.ContextMenuInfo;import android.view.GestureDetector.OnGestureListener;import android.view.GestureDetector.SimpleOnGestureListener;import android.view.ContextMenu;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity implements OnTouchListener {    GestureDetector gd;    TextView tv01;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv01 = (TextView) this.findViewById(R.id.tv01);        gd = new GestureDetector(this, new mysimpleGestureListener());        tv01.setOnTouchListener(this);    }    class mysimpleGestureListener extends SimpleOnGestureListener {        @Override        public boolean onScroll(MotionEvent e1, MotionEvent e2,                float distanceX, float distanceY) {            Log.i("zhouwa", "z d h h");            // TODO 自动生成的方法存根            return super.onScroll(e1, e2, distanceX, distanceY);        }    }    @Override    public boolean onTouch(View arg0, MotionEvent arg1) {        // TODO 自动生成的方法存根        //Log.i("zhouwa","kaikaikai");        gd.onTouchEvent(arg1);        return true;   //这个地方要设为true,否则GestureDetector事件可能不会被触发    }}

使用思路很简单,就3步:
1 对目标对象做Touch监听 如: tv01.setOnTouchListener(this);


2 创建一个GestureDetector对象,根据需要选择性的实现SimpleOnGestureListener类 中的方法
这里写图片描述


3 在onTouch方法中将手势事件传给GestureDetector对象:
这里写图片描述


onScroll : 拖且动
onSingleTapUp : 单击松开
onShowPress : 长按
onFling : 手指一滑




FR:徐海涛(Hunk Xu)

1 0