android 滑动和坐标系和 触控事件MotionEvent

一Android 原点坐标系

getLocationOnScreen(int location) 系统通过这个方法来获取Android坐标系中点的位置

在触控事件中使用getRawX() ,getRawY() 方法所获得的坐标同样式Android坐标系中的坐标

视图坐标系

二 Android视图坐标系,是一原点方向向右为X轴,正方向

以原点向下为Y轴正方向,只不过在视图坐标系中,原点不再式Android坐标系统中屏幕的最左上角,

而是以父视图左上角为坐标原点

在触控事件中,通过getX(),getY()所获得的坐标就是视图坐标系中的坐标

三 触控事件 ---MotionEvent

1 motionEvent 中封装的一些常用的事件常量,定义了触控事件的不同类型

//单点触摸按下动作

//触控事件中的常量

public static final int ACTION_DOWN             = 0; 单点触摸按下动作
public static final int ACTION_UP               = 1; 单点触摸离开动作
public static final int ACTION_MOVE             = 2; 触摸点移动动作
public static final int ACTION_CANCEL           = 3; 触摸点取消动作
public static final int ACTION_OUTSIDE          = 4; 触摸动作超出边界
public static final int ACTION_POINTER_DOWN     = 5; 多点触摸按下动作
public static final int ACTION_POINTER_UP       = 6; 多点离开动作

在该onTouchEvent(MotionEvent event)方法中通过event.getAction()方法来获取触控事件的类型,并用switch--case方法来

进行筛选

package com.yifei.myapplication;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;

public class MotionEventView extends View {
    public MotionEventView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    //
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        Log.d("MotionEvent", "onTouchEvent: "+event.getAction());
        int x = (int) event.getX();
        int y = (int) event.getY();
        Log.d("MotionEvent", "x--"+x+"y---"+y);
        switch (event.getAction()) {
            case MotionEvent.ACTION_MOVE: //2

                break;
            case MotionEvent.ACTION_UP: //1
                Log.d("MotionEvent", "抬起");
                break;
            case MotionEvent.ACTION_DOWN: //0
                Log.d("MotionEvent", "被按下");
                break;


            default:
                return false;
        }

        return true;//事件不再向上传递

    }

    @Override
    public boolean onTrackballEvent(MotionEvent event) {
        return super.onTrackballEvent(event);
    }
}

3View提供的获取坐标的方法

getTop()  获取到的是View 自身的顶边到其父布局顶边的距离

getLeft() 获取到的是View 自身到其父布局左边的距离

getRight() 获取到的是View 自身到其父布局右边的距离

getBottom() 获取到的是View 自身到其父布局下边的距离

MotionEvent提供的方法

getX(); 获取点击事件距离控件左边的距离,即视图坐标

getY() 获取点击事件距离控件上边的距离,,即视图坐标

getRawX() 获取点击事件距离整个屏幕左边的距离,即绝对坐标

getRawY() 获取点击事件距离整个屏幕顶边的距离,即绝对坐标

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值