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> 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • Android编程实现ViewPager多页面滑动切换及动画效果的方法
  • Android使用Fragment打造万能页面切换框架
  • Android仿今日头条滑动页面导航效果
  • Android中使用TabHost 与 Fragment 制作页面切换效果
  • Android应用中利用ViewPager实现多页面滑动切换效果示例
  • Android viewpager在最后一页滑动之后跳转到主页面的实例代码
  • Android中TabLayout结合ViewPager实现页面切换效果
  • 微信浏览器弹出框滑动时页面跟着滑动的实现代码(兼容Android和IOS端)
  • Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
  • Android使用TabLayou+fragment+viewpager实现滑动切换页面效果
  • Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题
(0)

相关推荐

  • Android应用中利用ViewPager实现多页面滑动切换效果示例

    1.添加android support包 因为上面的几个类都是在android support包中才提供,我们先添加包. 在Eclipse->Window->Android SDK Manager,选择列表中Extras->Android Support Library进行安装.下载完后在android-sdk\extras\android\support目录下,这里我们选择v4版本,进入v4目录,拷贝其中的android-support-v4.jar文件到工程的libs目录(若没有新建

  • Android仿今日头条滑动页面导航效果

    最近项目中用到了滑动页面,也就是和目前市场上很火的"今日头条"页面滑动类似,在网上找了一下,大部分都是用ViewPager来实现的,刚开始我用的是ViewPager+ViewGroup,上面的标题按钮用的是HorizontalScrollView,写完之后感觉效果比较生硬,果断换掉,发现了一个效果比较好的第三方,也就是今天的主题:PagerSlidingTabStrip.好了,下面来具体介绍一下PagerSlidingTabStrip,进行一下源码解析. 一.看一下demo的样子吧 二

  • Android viewpager在最后一页滑动之后跳转到主页面的实例代码

    先给大家说下实现思路 主要有是两个监听: 一是addOnPageChangeListener();二是setOnTouchListener(): addOnPageChangeListener()主要是为了获取position(滑动到了第几页) setOnTouchListener()主要是判断在最后一页中是否向左滑动了,然后进入主页 在没给大家分享代码之前,先给大家展示下效果图: 主要功能代码 addOnPageChangeListener(); viewPager.addOnPageChan

  • Android使用TabLayou+fragment+viewpager实现滑动切换页面效果

    TabLayou 主要实现的是标题头的 滑动 这个 控件 类似于 ScrollView XML中的布局 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <android.support.design.widget.TabLayout a

  • Android编程实现ViewPager多页面滑动切换及动画效果的方法

    本文实例讲述了Android编程实现ViewPager多页面滑动切换及动画效果的方法.分享给大家供大家参考,具体如下: 一.首先,我们来看一下效果图,这是新浪微博的Tab滑动效果.我们可以手势滑动,也可以点击上面的头标进行切换.与此同方式, 白色横条会移动到相应的页卡头标下.这是一个动画效果,白条是缓慢滑动过去的.好了,接下来我们就来实现它. 二.在开始前,我们先要认识一个控件,ViewPager.它是google SDk中自带的一个附加包的一个类,可以用来实现屏幕间的切换. 这个附加包是and

  • Android使用Fragment打造万能页面切换框架

    首先我们来回忆一下传统用Activity进行的页面切换,activity之间切换,首先需要新建intent对象,给该对象设置一些必须的参数,然后调用startActivity方法进行页面跳转.如果需要activity返回结果,则调用startActivityForResult方法,在onActivityResult方法中获得返回结果.此外,每一个要展示的activity需要在AndroidManifest.xml文件中注册.而且,如果在某些特定的情况下(比如65536方法数爆炸)要动态加载dex

  • Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题

    前言 之前在做一个Viewpager上面加载多个Fragment时总会实例化已经创建好的Fragmnet对象类似 viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { switch(position){ case 0: fragments=new Fragmnet01(); break; case

  • Android中使用TabHost 与 Fragment 制作页面切换效果

    三个标签页置于顶端 效果图: 在文件BoardTabHost.java中定义页面切换的效果:切换页面时,当前页面滑出,目标页面滑入.这是2个不同的动画设定动画时要区分对待 import android.content.Context; import android.util.AttributeSet; import android.view.animation.Animation; import android.view.animation.TranslateAnimation; import

  • 微信浏览器弹出框滑动时页面跟着滑动的实现代码(兼容Android和IOS端)

    在做微信开发的时候遇到这个问题:微信浏览器弹出框滑动时页面跟着滑动. 我觉得这个问题用的是下面这几行代码: var $body = $('body'), dialogIsInView = !1,//当前是不是对话框 lastContentContainerScrollTop = -1,//用于弹出框禁止内容滚动 $contentContainer = $('#content-container');//内容容器 //阻止Window滚动 function stopWindowScroll() {

  • Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能

    需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始没什么思路,后来搜了一下,发现有好几种实现方法,最好的一种就是在ViewPager图片的后面再加一个view,然后滑动viewpager的时候,判断一下就行了. 附一个链接,我写的代码就是参考的这个,稍微改了一点点,先看看效果图. 实现起来比较简单,先写一个滑动加载详情的布局,然后在viewpager的instantiateItem里面判断一下,如果是最后一张,就显示加载详情的那个布局.不过需要注意的是,v

  • Android中TabLayout结合ViewPager实现页面切换效果

    先看看效果,如图: 1.因为TabLayout是Android Design Support Library官方库的一个控件,所以使用TabLayout时候需要先添加对该库的依赖 compile 'com.android.support:design:22.2.0' 2.下面是TabLayout和ViewPager配合使用的布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns

随机推荐