Android开发中实现View滑动的七种方法总结
Android开发中实现View滑动的七种方法总结,记录下系统提供的 View 滑动的 API 方法。不管采用哪一种方式,本质的思想基本上都是一致的,当触摸 View 的时候,记录下当前触摸点的坐标,当手指移动的时候,记录移动后的触摸点坐标,从而获取相对上一次坐标点的偏移量,通过偏移量来修改 View 的坐标,这样不断重复,从而实现滑动过程。
layout 方法@Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE: int offsetX = x - lastX;// x 方向偏移量 int offsetY = y - lastY;// y 方向偏移量 layout(getLeft() + offsetX, getTop() + offsetY, getRight() + offsetX, getBottom() + offsetY); break; } return true; }
offsetLeftAndRight() 和 offsetTopAndBottom()
这个方法相当于系统对左右,上下移动的 API 的封装。
LayoutParams
LayoutParams 保存了一个 View 的布局参数,比如 width 和 height 参数,我们在通过 getLayoutParams() 获取 View 的 LayoutParams 时候要主要父容器的类型,比如父布局是 LinearLayout ,那么就用 LinearLayout.LayoutParams ,当然我们可以用他们的父类 ViewGroup.MarginLayoutParams 来处理,代码如下:
ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) getLayoutParams(); layoutParams.leftMargin = getLeft() + offsetX; layoutParams.topMargin = getTop() + offsetY; setLayoutParams(layoutParams);scrollTo 和 scrollBy
((View) getParent()).scrollBy(-offsetX, -offsetY);
Scroller
Scroller 是我们在实现弹性滑动中非常重要的角色,Scroller 在使用中需要注意下面几点。
重写 computeScroll() 方法
@Override public void computeScroll() { super.computeScroll(); //判断 Scroller 是否执行完毕 if (mScroller.computeScrollOffset()) { ((View) getParent()).scrollTo(mScroller.getCurrX(), mScroller.getCurrY()); //通过重绘来不断调用 invalidate(); } }
startScroll 开始弹性滑动public void startScroll(int startX, int startY, int dx, int dy)
参数分别是 x 方向和 y 方向起始点,和 偏移的距离。
上一篇: 手机webApp自适应的rem布局
下一篇: 原型链方法使用实例讲解
推荐阅读
-
Android中判断listview是否滑动到顶部和底部的实现方法
-
Android开发实现AlertDialog中View的控件设置监听功能分析
-
Android中自定义View的实现方式总结大全
-
Android中实现自动生成布局View的初始化代码方法
-
Android中通过view方式获取当前Activity的屏幕截图实现方法
-
Android开发中实现View滑动的七种方法总结
-
Android实现View滑动效果的6种方法
-
Android实现在xml文件中引用自定义View的方法分析
-
Android开发实现标题随scrollview滑动变色的方法详解
-
Android中判断listview是否滑动到顶部和底部的实现方法