可以是一个外层view也可以是一个内层view public class TouchUtil { /** * 非全屏下是否是都脱出屏幕 * * @param context * @param x 当前view的rawx * @param y 当前view的rawy * @param view 需要判断的view * @retu
public class TouchUtil {
/**
* 非全屏下是否是都脱出屏幕
*
* @param context
* @param x 当前view的rawx
* @param y 当前view的rawy
* @param view 需要判断的view
* @return
*/
public static int[] isOutOfScreenEage(Context context,int x, int y, View view) {
int[] loaction = new int[2];
loaction[0] = caluIsXOut(context,x,view);
loaction[1] = cluIsYOut(context,y,getStatusBarHei(context),view);
return loaction;
}
/**
* 全屏下是否脱出屏幕
* 此方法可以用在一个外层的view上也可以用在嵌套的view上
* @param context
* @param x
* @param y
* @param view
* @return
*/
public static int[] isOutOfScreenEageNoStatusBar(Context context,int x,int y,View view){
int[] loaction = new int[2];
loaction[0] = caluIsXOut(context,x,view);
loaction[1] = cluIsYOut(context,y,0,view);
return loaction;
}
private static int caluIsXOut(Context context,int x,View view){
int resultX;
if (x < -view.getLeft()) {
resultX = -view.getLeft();
} else if (x > getScreenWidth(context) - view.getWidth()-view.getLeft()) {
resultX = getScreenWidth(context) - view.getWidth()-view.getLeft();
} else {
resultX = x;
}
return resultX;
}
private static int cluIsYOut(Context context,int y,int statusBarHeight,View view){
int resultY;
if (y < -view.getTop()) {
resultY = -view.getTop();
} else if (y > getScreenHeight(context) - view.getHeight() - view.getTop() - statusBarHeight) {
resultY = getScreenHeight(context) - view.getHeight() - view.getTop() - statusBarHeight;
} else {
resultY = y;
}
return resultY;
}
private static int getStatusBarHei(Context context)
{
int statusBarHeight1 = -1;
//获取status_bar_height资源的ID
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
if (resourceId > 0) {
//根据资源ID获取响应的尺寸值
statusBarHeight1 = context.getResources().getDimensionPixelSize(resourceId);
}
//Log.i("WangJ", "status bar height:" + statusBarHeight1);
return statusBarHeight1;
}
/**
* 获取屏幕宽度
*
* @param ctx
* @return
*/
private static int getScreenWidth(Context ctx) {
return ctx.getResources().getDisplayMetrics().widthPixels;
}
/**
* 获取屏幕高度
*
* @param ctx
* @return
*/
private static int getScreenHeight(Context ctx) {
return ctx.getResources().getDisplayMetrics().heightPixels;
}
}
