重生原配逆袭:Android功能总结:仿照Launcher的Workspace实现左右滑动切换(一)

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 05:21:15
  Android功能总结:仿照Launcher的Workspace实现左右滑动切换 稿件投递  收藏本页  2011年06月22日 20:50  http://www.cnmsdn.com/
移动开发源码、电子书、工具包下载

  对于Launcher的桌面滑动大家应该都比较熟悉了,最好的体验应该是可以随着手指的滑动而显示不同位置的桌面,

  比一般用ViewFlinger+动画所实现的手势切换页面感觉良好多了~~~~

  分析了一下Launcher中的WorkSpace,里面有太多的代码我们用不上了(拖拽,长按,,,),把里面的冗余代码去掉得到实现滑动切换屏幕所必需的。。。。

  新建一个ScrollLayout类,继承自ViewGroup。

  重写onMeasure和onLayout两个方法:

  其中onMeasure方法中,得到ScrollLayout的布局方式(一般使用FILL_PARENT),然后再枚举其中所有的子view,设置它们的布局(FILL_PARENT),这样在ScrollLayout之中的每一个子view即为充满屏幕可以滑动显示的其中一页。

  在onLayout方法中,横向画出每一个子view,这样所得到的view的高与屏幕高一致,宽度为getChildCount()-1个屏幕宽度的view。

  添加一个Scroller来平滑过渡各个页面之间的切换,

  重写onInterceptTouchEvent和onTouchEvent来响应手指按下划动时所需要捕获的消息,例如划动的速度,划动的距离等。再配合使用scrollBy (int x, int y)方法得到慢速滑动小距离的时候,所需要显示的内容。最后当手指起来时,根据划动的速度与跨度来判断是向左滑动一页还是向右滑动一页,确保每次用户操作结束之后显示的都是整体的一个子view.

  ScrollLayout源码:

  view plaincopy to clipboardprint?

  package com.yao_guet.test;

  import Android.content.Context;

  import android.graphics.Canvas;

  import android.util.AttributeSet;

  import android.util.Log;

  import android.view.MotionEvent;

  import android.view.VelocityTracker;

  import android.view.View;

  import android.view.ViewConfiguration;

  import android.view.ViewGroup;

  import android.widget.Scroller;

  /**

  * 仿Launcher中的WorkSapce,可以左右滑动切换屏幕的类