Android      Android使用LayoutParams属性进行左右侧滑动画   
文章目录  [隐藏]

《Android中使用Scroller实现非全屏宽度抽屉动画》中使用Scroller实现了一个侧滑动画效果。文中很多细节没说清楚同时有很多需求上的不足。

本例是一种使用Layout的属性对象实现的侧滑动画,仅实现根据手指滑动侧滑。





Activity的布局:



Aty代码:


自定义侧滑类

用到了速度判断,手指滑动速度够快,侧滑即即刻执行。用到VelocityTracker速度追踪器。这个功能可以删除。
onLayout()

首先重写此方法,主要目的是得到本布局的属性对象。
//**
* 随手指滑动时,系统持续调用此方法重绘此视图/界面/布局

* 应用运行第一次加载此布局时即调用一次。初始化属性实例,非常重要!!!
* @param changed 此布局滑动/移动 即true
* @param l 此布局左边相对于父容器 左 边的位置,位于父左边的左边为负数
* @param r 此布局右边相对于父容器 左 边的位置
* @param t 此布局顶边相对于父容器 顶 边的位置
* @param b 此布局底边相对于父容器 顶 边的位置
*//

onTouchEvent

然后是必须的重写touch事件。在其中根据手指的按下位置、滑动过程、拿起位置、滑动速度进行判断分析处理。

  • 保存手指按下时marginLeft的值和手指的距离“dis”
  • 保持手指滑动时和marginLeft的距离一直是“dis”
  • 说起来比较绕,具体还是代码:

    手指按下

    手指滑动

    手指拿起



    提供项目包:注意为了上传方便android-support-v4.jar删除了,导入后记得替换。同时重写build project。
    [download id="1672"]

    承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设