android Scroll学习

系统提供了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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值