码迷,mamicode.com
首页 > 移动开发 > 详细

Android30问之滑动组件

时间:2015-06-30 13:02:33      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:android   滑动   

本文来自http://blog.csdn.net/w324821962,引用麻烦注明出处


    为了让大家有个概念,这里引用了一下网络上的一个全景照片,相信大家对于这样的拍照技巧还是有了解过的,别说你没用过全景。

技术分享
现在先说明一下几个对象:

  • 镜头
  • 场景
  • 内容

那么转换后,这个图该这么看
技术分享
所谓镜头就是我们的手机屏幕大小,无论是3.7寸,4.3寸等等。
所谓场景就是我们所有内容的有序排列,无论是横向(ViewPage),还是纵向(ListView)等等。
所谓内容就是显示在镜头内的事物。
按照相对论,虽然实际上我们是移动镜头去捕捉内容从而达到场景的实现。反过来,就是镜头静止,我们移动场景来展现内容。


在android中对于滑动提供了一个Scroll类
如果你使用 Scroller ,流程如下:

1.可以在自定义的布局中,按照需求初始化 Scroller 构造函数。

2.重写onInterceptTouchEvent(MotionEvent ev)方法,看看是否要拦截相关的点击时间。

3.重写onTouchEvent(MotionEvent event)方法,根据触摸屏上的动作使用 computeScroll()以及 scrollTo 和 scrollBy 方法 进行根据手指对布局进行滑动效果。

4.在触摸操作结束(MotionEvent.ACTION_UP)的时候,调用startScroll(int startX, int startY, int dx, int dy, int duration)方法,进行动画自动操作,来完成整个滚动流程。

针对于Scroll的运用如下如所示
技术分享

而对于ScrollTo和ScrollBy的区别在于你对To和By的理解,ScrollTo 是 到那个位置,ScrollBy 是经过这段位置。


在Android对于手势通过了一个VelocityTracker类。Android.View.VelocityTracker主要用于跟踪触屏事件(flinging和其他gestures事件)的速率。
大体的使用是这样的:
当你需要跟踪触摸屏事件的速度的时候,使用obtain()方法来获得VelocityTracker类的一个实例对象
在onTouchEvent回调函数中,使用addMovement(MotionEvent)函数将当前的移动事件传递给VelocityTracker对象
使用computeCurrentVelocity (int units)函数来计算当前的速度,使用 getXVelocity ()、 getYVelocity ()函数来获得当前的速度

private VelocityTracker mVelocityTracker;
//在onTouchEvent(MotionEvent event)中
if(mVelocityTracker == null){
    mVelocityTracker = new VelocityTracker .obtain();//获得VelocityTracker类实例 
}
mVelocityTracker .addMotionEvent(event);//将事件加入到VelocityTracker类实例中 
 //判断当ev事件是MotionEvent.ACTION_UP时:计算速率 
final VelocityTracker velocityTracker  = mVelocityTracker;
velocityTracker.computerCurrentVelocity(1,(float)0.01);
 velocityTracker.computeCurrentVelocity(1000); //设置units的值为1000,意思为一秒时间内运动了多少个像素 

通过这几天的学习,目前对于滑动的理解暂时只有这么多,如果这篇文章对大家有一点帮助,说明我的学习还是有点成果的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android30问之滑动组件

标签:android   滑动   

原文地址:http://blog.csdn.net/w324821962/article/details/46692605

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!