Unity和Android 事件函数的比较

做过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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值