实现效果:屏幕实现滑屏切换效果,大家都知道的效果,就不截图了
实现步骤:
1. 创建项目interface,我选择的版本是Android3.0,
Application Name: Animation
Package Name: zf.itcast.animation
Create Activity:MainActivity
2. 在main.xml中定义两个Activity,并且设置样式
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <!-- 页面切换动画控件 --> <ViewFlipper android:id="@+id/viewFlipper" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 第一页 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello" android:onClick="openActivity"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/first_acvivity" /> </LinearLayout> <!-- 第二页 --> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#339900" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/second_acvivity" /> </LinearLayout> </ViewFlipper> </LinearLayout>
3. 在类MainActivity中设置动画切换方法
package zf.itcast.animation; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ViewFlipper; public class MainActivity extends Activity { //定义控件ViewFlipper private ViewFlipper viewFlipper; //定义手指开始触点屏幕的横坐标 private float startX; //从左向右进入动画 private Animation enter_lefttoright; //从左向右退出动画 private Animation exit_lefttoright; //从右向左进入动画 private Animation enter_righttoleft; //从右向左退出动画 private Animation exit_righttoleft; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //加载动画效果 enter_lefttoright = AnimationUtils.loadAnimation(this, R.anim.enter_lefttoright); exit_lefttoright = AnimationUtils.loadAnimation(this, R.anim.exit_lefttoright); enter_righttoleft = AnimationUtils.loadAnimation(this, R.anim.enter_righttoleft); exit_righttoleft = AnimationUtils.loadAnimation(this, R.anim.exit_righttoleft); viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper); } /** * <p>功能:屏幕触屏事件</p> * @author 周枫 * @date 2012-5-30 */ @Override public boolean onTouchEvent(MotionEvent event) { //点击屏幕,MotionEvent.ACTION_DOWN 为手指点击屏幕事件 if(event.getAction() == MotionEvent.ACTION_DOWN) { //获取手指开始触点横坐标 startX = event.getX(); //手指抬起,结束滑屏 } else if(event.getAction() == MotionEvent.ACTION_UP) { //获取手指抬起,结束点横坐标 float endX = event.getX(); //结束点横坐标大于起始点横坐标,说明手指是向右滑动 if(endX > startX) { //控件进入动画效果 viewFlipper.setInAnimation(enter_lefttoright); //控件退出动画效果 viewFlipper.setOutAnimation(exit_lefttoright); //显示下一页 viewFlipper.showNext(); //结束点横坐标小于起始点横坐标,说明手指是向左滑动 } else if (endX < startX) { viewFlipper.setInAnimation(enter_righttoleft); viewFlipper.setOutAnimation(exit_righttoleft); //显示前一页 viewFlipper.showPrevious(); } return true; } return super.onTouchEvent(event); } /** * <p>功能:打开新的Activity</p> * @author 周枫 * @date 2012-5-30 * @param * @return void */ public void openActivity(View v){ Intent intent = new Intent(this, OtherActivity.class); startActivity(intent); //屏幕动画淡入淡出效果切换,调用anim文件夹中创建的enteralpha(进入动画)和exitalpha(淡出动画)两个动画(注意:两个xml文件命名不能有大写字母) //如果想定义其他动画效果,只需要改变enteralpha和exitalpha两个文件 this.overridePendingTransition(R.anim.enteralpha,R.anim.exitalpha); } }
4. 在res文件夹下创建anim文件夹,新建4个动画效果,分别为:enter_lefttoright.xml(从左到右进入效果),exit_lefttoright(从左向右退出动画),
enter_righttoleft(从右向左进入动画),exit_righttoleft(从右向左退出动画),具体代码为:
enter_lefttoright.xml(从左到右进入效果)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <!-- 平移动画效果 从左到右 改变x轴坐标--> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="2000" /> </set>
exit_lefttoright(从左向右退出动画)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <!-- 平移动画效果 改变x轴坐标--> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="2000" /> </set>
enter_righttoleft(从右向左进入动画)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <!-- 平移动画效果 从左到右 改变x轴坐标--> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="2000" /> </set>
exit_righttoleft(从右向左退出动画)
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <!-- 平移动画效果 改变x轴坐标--> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="2000" /> </set>
5. 关于string.xml文件
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">打开新Activity</string> <string name="app_name">Animation</string> <string name="new_window">新窗口</string> <string name="new_activity">这是新Activity</string> <string name="first_acvivity">第一页</string> <string name="second_acvivity">第二页</string> </resources>
6. 成功实现,运行看效果吧~~~