Android自定义控件:MotionEvent中getX(),getY(),getRawX(),getRawY() ,getTop,getLeft区别

xiaoxiao2021-02-28  42

一、getRawX、getRawY与getX、getY的区别 在编写android的自定义控件,或者判断用户手势操作时,往往需要使用MotionEvent中的getRawX()、getRawY()与getX()、getY()取得触摸点在X轴与Y轴上的距离,这四个方法都返回一个float类型的参数,单位为像素(Pixel)。 getRawX()、getRawY()返回的是触摸点相对于屏幕的位置,而getX()、getY()返回的则是触摸点相对于View的位置。 以下两张图直观的表现了这几个方法的差异,在屏幕中央放置了一个Button,图中绿圆点为触摸点位置。

二、View中的getTop,getLeft区别

getTop: 按钮左上角相对于父view(LinerLayout或其它layout)的y坐标 getLeft: 按钮左上角相对于父view(LinerLayout或其它layout)的x坐标

我们还是用一张直观图来描述吧:

最后贴上通过反射拿到状态栏的高度代码:

private int getStatusBarHeight() { if (mStatusBarHeight == 0) { try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object o = c.newInstance(); Field field = c.getField("status_bar_height"); int x = (Integer) field.get(o); mStatusBarHeight = getResources().getDimensionPixelSize(x); } catch (Exception e) { e.printStackTrace(); } } return mStatusBarHeight; }
转载请注明原文地址: https://www.6miu.com/read-73998.html

最新回复(0)