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():當前觸摸點相對於當前控件的座標;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章