软件编程
位置:首页>> 软件编程>> Android编程>> Android实现页面滑动切换动画

Android实现页面滑动切换动画

作者:光仔December  发布时间:2023-12-26 11:47:54 

标签:Android,页面滑动,页面切换

本文实例为大家分享了Android实现页面滑动切换动画的具体代码,供大家参考,具体内容如下

实现两个页面滑动切换,一些相册的效果也是如此

一个Activity的界面配置文件

activity_main.xml:


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical" >

<!--ViewFlipper里面的子控件可以被看成一页-->
 <ViewFlipper  
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:id="@+id/viewFlipper"
   >
   <!-- 第一页 -->
   <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"  
     android:background="#339900"  
     >
     <TextView  
       android:layout_width="wrap_content"
     android:layout_height="fill_parent"
     android:text="第一页"  
       />
   </LinearLayout>

<!-- 第二页 -->
   <LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"  
     >
   <TextView  
       android:layout_width="wrap_content"
     android:layout_height="fill_parent"
     android:text="第二页"  
       />
   </LinearLayout>

</ViewFlipper>

</LinearLayout>

MainActivity.java:


package com.example.activitymove;

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 {

private ViewFlipper viewFlipper;
 private float startX;
 private float endX;
 private Animation in_lefttoright;
 private Animation out_lefttoright;
 private Animation in_righttoleft;
 private Animation out_righttoleft;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

in_lefttoright=AnimationUtils.loadAnimation(this, R.anim.enter_lefttoright);
   out_lefttoright=AnimationUtils.loadAnimation(this, R.anim.out_lefttoright);

in_righttoleft=AnimationUtils.loadAnimation(this, R.anim.enter_righttoleft);
   out_righttoleft=AnimationUtils.loadAnimation(this, R.anim.out_righttoleft);
   viewFlipper=(ViewFlipper) this.findViewById(R.id.viewFlipper);
 }

//处理触屏时间的方法
 //手在屏幕上向右滑动然后松开翻下一页,向左翻显示前一页
 public boolean onTouchEvent(MotionEvent event) {
   if(event.getAction()==MotionEvent.ACTION_DOWN){
     //记录手放在屏幕上的点位置
     startX=event.getX();
   }else if(event.getAction()==MotionEvent.ACTION_UP){
     //记录手离开屏幕上的点位置
     endX=event.getX();
     if(endX>startX){
       viewFlipper.setInAnimation(in_lefttoright);
       viewFlipper.setOutAnimation(out_lefttoright);
       viewFlipper.showNext();//显示下一页
     }else if(endX<startX){
       viewFlipper.setInAnimation(in_righttoleft);
       viewFlipper.setOutAnimation(out_righttoleft);
       viewFlipper.showPrevious();//显示前一页
     }
     return true;
   }
   return super.onTouchEvent(event);
 }

}

在res/anim/文件夹下有
enter_lefttoright.xml和enter_righttoleft.xml
out_lefttoright.xml和out_righttoleft.xml

四个动画配置文件:

enter_lefttoright.xml:


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false">
 <translate  
   android:fromXDelta="-100%p"
   android:toXDelta="0"
   android:duration="1000"
   />

</set>

enter_righttoleft.xml:


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false">
  <!-- 这里用到了平移动画,这里只动x轴坐标就可以了  
 -100%p:这就是屏幕的宽度:这里的p代表parent,父元素的宽度,都是
 手机屏幕宽度,第一页要从-100%p移动到0,持续5秒中.
 -->
 <translate  
   android:fromXDelta="100%p"
   android:toXDelta="0"
   android:duration="1000"
   />

</set>

out_lefttoright.xml:


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false">
 <translate  
   android:fromXDelta="0"
   android:toXDelta="100%p"
   android:duration="1000"
   />

</set>

out_righttoleft.xml:


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false">
 <translate  
   android:fromXDelta="0"
   android:toXDelta="-100%p"
   android:duration="1000"
   />

</set>

效果:用手向右滑动,整个页面向右慢慢滑动,切换页面,用手向左滑动,整个页面向左慢慢滑动,切换页面。
(将配置文件换成其他的动画效果也可以,本例子使用的是移入移出的动画效果)

来源:http://blog.csdn.net/acmman/article/details/40988091

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com