效果图:
首先定义四个动画效果
进:左→右<?xml version="1.0" encoding="utf-8"?>
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="-100%p"
android:toXDelta="0"/>
出:左→右<?xml version="1.0" encoding="utf-8"?>
android:duration="300"
android:fromXDelta="0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toXDelta="100%p" />
进:右→左<?xml version="1.0" encoding="utf-8"?>
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="100%p"
android:toXDelta="0"/>
出:右→左<?xml version="1.0" encoding="utf-8"?>
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:duration="300"
android:fromXDelta="0"
android:toXDelta="-100%p"/>
Acitivity代码块:package cn.cbd.pagechange;
import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.ViewFlipper;
public class PageChangeTestActivity extends Activity
{
private ViewFlipper vf;
private Animation aInLeftToRight;
private Animation aOutRightToLeft;
private Animation aOutLeftToRight;
private Animation aInRightToLeft;
private float startX;
private float endX;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vf = (ViewFlipper) findViewById(R.id.vf_pageChange);
// 设置动画 找到各个Animation对象
aInLeftToRight = AnimationUtils.loadAnimation(this,
R.anim.inlefttoright);
aOutRightToLeft = AnimationUtils.loadAnimation(this,
R.anim.outrighttoleft);
aOutLeftToRight = AnimationUtils.loadAnimation(this,
R.anim.outlefttoright);
aInRightToLeft = AnimationUtils.loadAnimation(this,
R.anim.inrighttoleft);
}
// 判断activity的触摸事件
public boolean onTouchEvent(MotionEvent event)
{
// 按下
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
// 记录开始位置
startX = event.getX();
System.out.println("----" + "按下");
}
// 移动
if (event.getAction() == MotionEvent.ACTION_MOVE)
{
System.out.println("----" + "移动");
}
// 抬起
if (event.getAction() == MotionEvent.ACTION_UP)
{
// 记录结束的位置
endX = event.getX();
// 判断移动距离 >0 说明从左往右
if (endX - startX > 0)
{
vf.setOutAnimation(aOutLeftToRight);
vf.setInAnimation(aInLeftToRight);
vf.showPrevious();
} else
{
vf.setInAnimation(aInRightToLeft);
vf.setOutAnimation(aOutRightToLeft);
vf.showNext();
}
System.out.println("----" + "抬起");
}
// 取消
if (event.getAction() == MotionEvent.ACTION_CANCEL)
{
System.out.println("----" + "取消");
}
// return super.onTouchEvent(event);
return true;
}
}