Android MotionEvent中getX()、getRawX()和getTop()的区别

为了展示getX()、getRawX()和getTop()方法的区别,我们写了一个简单的测试Demo,我们写了一个自定义控件(继承ImageView)。

package com.demo.ui;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.ImageView;

public class ImageViewTest extends ImageView {

    public ImageViewTest(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int eventaction = event.getAction();
        switch (eventaction){
            case MotionEvent.ACTION_DOWN:
                break;
            case MotionEvent.ACTION_MOVE:
                int top, left;
                float rawx, rawy, x, y;
                top = getTop();
                left = getLeft();
                rawx = event.getRawX();
                rawy = event.getRawY();
                x = event.getX();
                y = event.getY();

                Log.i("TAG", "getTop() : " + top);
                Log.i("TAG", "getLeft() : " + left);
                Log.i("TAG", "getRawX() : " + rawx);
                Log.i("TAG", "getRawY() : " + rawy);
                Log.i("TAG", "getX() : " + x);
                Log.i("TAG", "getY() : " + y);
                break;
            case MotionEvent.ACTION_UP:
                break;
        }
        return super.onTouchEvent(event);
    }
}

当你触摸ImageViewTest控件的时候:
在这里插入图片描述

  • getTop()、getLeft():当前控件左上角相对于父容器控件的坐标;

  • getRawX()、getRawY():当前触摸点相对于屏幕的坐标;

  • getX()、getY():当前触摸点相对于当前控件的坐标;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值