android Scroll学习

来源:互联网 发布:大华130万网络摄像机 编辑:程序博客网 时间:2024/06/03 21:16
系统提供了getLocationOnScreen(intlocal[])方法获取Android坐标系中点的位置 在触控事件 中使用getRowX(),getRowY()方法获得的坐标同样是中点坐标

视图坐标系
描述子视图在父视图中的位置关系
在触控事件中通过getX(),getY()所获得的就是视图坐标系中的坐标

触控事件 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;



 @Override    public boolean onTouchEvent(MotionEvent event) {        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:                break;            case MotionEvent.ACTION_UP:                break;            case MotionEvent.ACTION_CANCEL:                break;            case MotionEvent.ACTION_OUTSIDE:                break;            case MotionEvent.ACTION_POINTER_DOWN:                break;            case MotionEvent.ACTION_POINTER_UP:                break;        }        return super.onTouchEvent(event);    }



getLeft()方法是获得View自身的左边到父布局左边的距离
getRight()方法是获得View自身的右边到父布局左边的距离
getBotton()获取到的是View自身底部到父布局定边的距离
getTop()获取道德是View自身顶部到父布局顶部的距离
MotinEvent提供的方法
getX() 获取点击事件距离控件左边的距离,即视图坐标
getY()获取点击事件距离控件顶边的距离,即视图坐标
getRowX()获取点击事件距离整个屏幕左边的距离
getRowY()获取点击事件距离整个屏幕顶边的距离

实现滑动的方法

1    @Override    public boolean onTouchEvent(MotionEvent event) {        int rowX = (int) event.getRawX();        int rowY = (int) event.getRawY();        switch (event.getAction()){            case MotionEvent.ACTION_DOWN:                lastX = rowX;                lastY = rowY;                break;            case MotionEvent.ACTION_MOVE:                int offsetX = rowX - lastX;                int offsetY = rowY - lastY;                layout(getLeft() + offsetX,                        getTop() + offsetY,                        getRight() + offsetX,                        getBottom() + offsetY                        );                lastX = rowX;                lastY = rowY;                break;        }        return true;    }


2
系统提供的两个方法 一个对左右上下移动的api 计算出偏移量后使用如下代码可以对view重新布局
offsetLeftAndRight(offsetX) 同时对left 和right进行偏移
offsetTopAndBotton(offsetY)同时对Top和Botton进行偏移


0 0