通过左右滑动屏幕来切换页面,有4种方式:
(0) 使用ScrollLayout;
(1) 使用动画;
(2) Activity 实现 OnTouchListener 和 OnGestureListener 接口;
(3) 使用 ViewPager;
本文将对上述各个方式逐一介绍。
将scrolllayout 的布局方向设置为水平,当layout的水平尺寸大于手机屏幕时,即可实现左右滑动效果。有1款叫做 do it tomorrow 的应用,就是典型的代表。解压后可以看到,其背景图片其实是1张1280x960的图片(如下图),隐藏滚动条,即有水平滑动的效果。
这里的动画是指,使用Activity 中的 overridePendingTransition(,) 方法,具体能实现的动画效果如下表:
淡入淡出效果 | overridePendingTransition(R.anim.fade, R.anim.hold); |
放大淡出效果 | overridePendingTransition(R.anim.my_scale_action,R.anim.my_alpha_action); |
转动淡出效果 | overridePendingTransition(R.anim.scale_rotate,R.anim.my_alpha_action); |
转动淡出效果 | overridePendingTransition(R.anim.scale_translate_rotate,R.anim.my_alpha_action); |
左上角展开淡出效果 | overridePendingTransition(R.anim.scale_translate,R.anim.my_alpha_action); |
压缩变小淡出效果 | overridePendingTransition(R.anim.hyperspace_in,R.anim.hyperspace_out); |
右往左推出效果 | overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out); |
下往上推出效果 | overridePendingTransition(R.anim.push_up_in,R.anim.push_up_out); |
左右交错效果 | overridePendingTransition(R.anim.slide_left,R.anim.slide_right); |
放大淡出效果 | overridePendingTransition(R.anim.wave_scale,R.anim.my_alpha_action); |
缩小效果 | overridePendingTransition(R.anim.zoom_enter,R.anim.zoom_exit); |
上下交错效果 | overridePendingTransition(R.anim.slide_up_in,R.anim.slide_down_out); |
我们以“右往左推出效果”为例,其中R.anim.slide_left 和 R.anim.slide_right 文件分别如下:
上述xml文件中,有3个值需要解释:fromXDelta 是指页面滑动的起点,toXDelta 是指页面滑动的终点,duration 是指滑动耗时,单位为毫秒(1/1000 秒)。可以实现AnimLeftActivity 和 AnimRightActivity 之间的左右滑动。具体手机屏幕和 x 轴、y 轴的关系见下图:
public class AnimLeftActivity extends Activity {
原文:http://www.cnblogs.com/ouyangping/p/7628997.html