【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:

</pre><pre name="code" class="html"><?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>

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

时间: 2024-09-23 18:16:53

【Android开发】页面切换动画的相关文章

Android实现移动小球和CircularReveal页面切换动画实例代码

前言 本文主要给大家介绍了关于Android如何实现移动小球和CircularReveal页面切换动画的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 效果图如下 是在fragment中跳转activity实现的效果,fragment跳fragment,activity跳activity类似~~ 实现过程 重写FloatingActionButton的onTouchListener()方法,使小球可以移动,并判断边界 点击fab时记录坐标传到下一个页面,在下一个页面展

设计一个android引导页面的动画,最好是透明渐变动画效果,求大神帮忙!

问题描述 设计一个android引导页面的动画,最好是透明渐变动画效果,求大神帮忙! 设计一个android引导页面的动画,最好是透明渐变动画效果,大概样式就像APP微信精选那个引导页面那种样式,求大神帮忙给个Demo! 解决方案 之前回复的都回复不了,现在重新再给你回复一遍吧,首先创建三个Fragment,我现在给你举一个例子: public class WelcomeFragment1 extends Fragment { @Override public void onCreate(Bun

太赞了!超炫的页面切换动画效果【附源码下载】

原文:太赞了!超炫的页面切换动画效果[附源码下载] 今天我们想与大家分享一组创意的页面切换熊效果集合.我们已经在示例中罗列了一组动画,可以被应用到页面切换过程中,创造出很有趣的导航效果.虽然有些效果都非常简单,只是简单的滑动动作,但另外的一些则是利用了视角(Perspective)和 3D 转换(3D Transforms)来创造一些立体动感的效果.   立即下载      在线演示   温馨提示:为保证最佳的效果,请在 IE10+.Chrome.Firefox 和 Safari 等现代浏览器中

Android开发之背景动画简单实现方法

本文实例讲述了Android开发之背景动画简单实现方法.分享给大家供大家参考,具体如下: 1.先创建动画层,有三张图片 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:drawable="@draw

android开发ViewFlipper触摸动画

背景介绍: 在做Android项目开发之前你需要做三件事情:第一.下载Android SDK(你可 以在这里下载),第二.准备项目编辑器(我建议使用eclipse )第三.下载 Android的Eclipse插件. 当你准备好你的环境之后,可以开始学习本教程. 当你第一次打开Android SDK,您需要创建一个虚拟设备,我打开建议创建一 个普遍的设备为目标的Android 1.6 API Level 4使用,然后你需要添加硬件功 能,例如:SD卡支持,Accellerometer,相机支持等等

Android开发之视图动画基础

Android的animation由四种类型组成 XML中 alpha渐变透明度动画效果 scale渐变尺寸伸缩动画效果 translate画面转换位置移动动画效果 rotate画面转移旋转动画效果 JavaCode中 AlphaAnimation渐变透明度动画效果 ScaleAnimation渐变尺寸伸缩动画效果 TranslateAnimation画面转换位置移动动画效果 RotateAnimation画面转移旋转动画效果 Android动画模式 Animation主要有两种动画模式:一种是

Android开发中ViewPager实现多页面切换效果_Android

ViewPager用于实现多页面的切换效果,该类存在于Google的兼容包里面,所以在引用时记得在BuilldPath中加入"Android-support-v4.jar" 首先必须知道:要使用ViewPager,必须要使用PagerAdapter为其提供数据,也就必须实现下面四个方法: 1, getCount():ViewPager需要显示的页面个数 2,isViewFromObject(View view, Object object):view 是某个位置的页面,Object是

【Android开发】Activity切换动画

好久没写博文了,自从ACM退役以后,一直在专注开发应用程序.如果不是今天有博友加我QQ,我都忘记我的博客了,看看以前自己的劳动成果,努力的那些日子历历在目,我决定每周定时更新博文!作为自己前进的动力. 今天学了Activity切换动画与页面切换动画,总结了一下学习笔记: Activity切换动画: 两个Activity的界面配置文件 activity_main.xml: <?xml version="1.0" encoding="utf-8"?> <

Android开发中实现应用的前后台切换效果_Android

在介绍程序实现之前,我们先看下Android中Activities和Task的基础知识. 我们都知道,一个Activity 可以启动另一个Activity,即使这个Activity是定义在别一个应用程序里的,比如说,想要给用户展示一个地图的信息,现在已经有一个Activity可以做这件事情,那么现在你的Activity需要做的就是将请求信息放进一个Intent对象里,并且将这个Intent对象传递给startActivity(),那么地图就可显示出来了,但用户按下Back键之后,你的Activi