JazzyViewPager 开源项目地址:

https://github.com/jfeinstein10/JazzyViewPager

其实实现它还是蛮简单的,有两个关键点,一是使用扩展FragmentPagerAdapter,二是重写instantiateItem,isViewFromObject这两个方法,如果仅仅扩展FragmentPagerAdapter的话,动画效果则会不起作用。

布局文件如下:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tabPage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <com.jfeinstein.jazzyviewpager.JazzyViewPager
android:id="@+id/jazzy_pager"
android:layout_width="match_parent"
android:layout_weight="1"
android:layout_height="0dp"> </com.jfeinstein.jazzyviewpager.JazzyViewPager> <TextView
android:background="@color/bg_silver"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="this is the TabFragmentActivity\nTAB will be here." />
</LinearLayout>

Java代码如下:

package org.csware.ee.demo;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout; import com.jfeinstein.jazzyviewpager.JazzyViewPager; import org.csware.ee.demo.fragment.FourFragment;
import org.csware.ee.demo.fragment.OneFragment;
import org.csware.ee.demo.fragment.ThreeFragment;
import org.csware.ee.demo.fragment.TwoFragment; public class TabFragmentActivity extends FragmentActivity { final static String TAG = "TabFragmentActivity"; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tab_fragment); init();
} private JazzyViewPager mJazzy;
LinearLayout tabPage;
FragmentActivity activity; void init() {
activity = this; tabPage = (LinearLayout) findViewById(R.id.tabPage); setupJazziness(JazzyViewPager.TransitionEffect.Standard);
} void setupJazziness(JazzyViewPager.TransitionEffect effect) {
mJazzy = (JazzyViewPager) findViewById(R.id.jazzy_pager);
mJazzy.setTransitionEffect(effect);
//mJazzy.setAdapter(new MainAdapter());
mJazzy.setAdapter(new TabFragmentAdapter(getSupportFragmentManager()));
//mJazzy.setPageMargin(30);
// mJazzy.setOutlineEnabled(true); } /**
* 适配器
*/
class TabFragmentAdapter extends FragmentPagerAdapter { public TabFragmentAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
} Fragment[] pages = new Fragment[]{
new OneFragment(),
new TwoFragment(),
new ThreeFragment(),
new FourFragment()
}; @Override
public Fragment getItem(int position) {
return pages[position];
} @Override
public int getCount() {
return pages.length;
} //**************加上下面的两行即可实现换页时的动画效果*********************************// @Override
public Object instantiateItem(ViewGroup container, int position) {
Object obj = super.instantiateItem(container, position);
mJazzy.setObjectForPosition(obj, position);
return obj;
} @Override
public boolean isViewFromObject(View view, Object object) {
if (object != null) {
return ((Fragment) object).getView() == view;
} else {
return false;
}
}
} }

至于4个Fragment,就不贴了。

通过JazzyViewPager来实现Fragment页面间的动画切效果的更多相关文章

  1. Jquery 页面间传值(非QuerryString)

    实现原理: 实现方式不是很复杂,父页面A打开一个子页面 A1,并同时写一个带参数的接收数据函数Receive(result),在A1页面进行逻辑操作,然后调用父页面A的Receive(result)函 ...

  2. ASP.NET多种不同页面间数据传递的方法

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...

  3. iOS 页面间几种传值方式(属性,代理,block,单例,通知)

    第二个视图控制器如何获取第一个视图控制器的部分信息 例如 :第二个界面中的lable显示第一个界面textField中的文本 这就需要用到属性传值.block传值 那么第一个视图控制器如何获的第二个视 ...

  4. UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)

    前言 EventBus是一个Android版本的页面间通信库,这个库让页面间的通信变得十分容易且大幅降低了页面之间的耦合.小弟之前玩Android的时候就用得十分顺手,现在玩uwp就觉得应该在这平台也 ...

  5. 使用postMesssage()实现跨域iframe页面间的信息传递----转载

    由于web同源策略的限制,当页面使用跨域iframe链接时,主页面与子页面是无法交互的,这对页面间的信息传递造成了不小的麻烦,经过一系列的尝试,最后我发现有以下方法可以实现: 1. 子页面url传参 ...

  6. asp.net页面间传值方式

    使用asp.net开发项目,必然会在页面间进行传值,本文介绍几种常见的页面传值方式,仅作笔记,以便后续查找使用. 前提:新建两个页面:ValuePage.aspx,ObtainValue.aspx,本 ...

  7. Metro 页面间跳转报错、打包和安装一个本地的Metro类型应用

    1.模板页面间传值跳转报错误 参照:http://www.cnblogs.com/dagehaoshuang/archive/2012/08/31/2665166.html#2862480 强烈推荐, ...

  8. .net中常用的几种页面间传递参数的方法

    转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...

  9. iOS页面间传值的方式(Delegate/NSNotification/Block/NSUserDefault/单例)

    iOS页面间传值实现方法:1.通过设置属性,实现页面间传值:2.委托delegate方式:3.通知notification方式:4.block方式:5.UserDefault或者文件方式:6.单例模式 ...

随机推荐

  1. pages与页面配置

    全局定义页特定配置设置,如配置文件范围内的页和控件的 ASP.NET 指令.能配置当前Web.config目录下的所有页面的设置. <pages buffer="[True|False ...

  2. sqlserver 通用分页存储过程(转)

    USE [AAA_TYDC] GO /****** Object: StoredProcedure [dbo].[proc_DataPagination] Script Date: 11/20/201 ...

  3. centos安装禅道的步骤

    1.下载 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline  下载的文件是 xam ...

  4. 番外一:关于thinkphp框架下的文件导入路径问题

    总的来说,要使在thinkphp框架下面HTML导入的图片.css文件和js文件有效,只有两种方法:(1)使用绝对路径:(2)在项目目录下创建新目录Public,把所有的img文件夹.js文件夹和cs ...

  5. JAVA基础,字符串

    字符串String(一个字符数组,常量,不可变): 1. 创建并初始化字符串: 1). 使用字符串常量直接初始化 String s="hello!"; 2). 使用构造方法创建并初 ...

  6. 简单Java类与XML之间的转换

    需要的jar包:xmlpull_1_0_5.jar,xstream-1.4.1.jar) 1.工具类XstreamUtil package com.learn.util; import com.tho ...

  7. jQuery元宵猜灯谜特效(元宵十五日猜一个字)

    在线体验:http://keleyi.com/keleyi/phtml/jqtexiao/35.htm jQuery元宵猜灯谜特效的HTML代码如下: <!DOCTYPE html> &l ...

  8. HTML5标签

    可以进行省略的标签 不允许写结束标记的标签:area(定义图像映射中的区域).base(为页面上的所有链接规定默认地址或默认目标).br.col(为表格中一个或多个列定义属性值).embed(定义嵌入 ...

  9. Json to JObject转换的使用方法

    Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和 ...

  10. javascript的函数

    1.函数的声明 (1) function命令方式 function fn(){}; (2) 函数的表达式 采用变量赋值的方式,function命令后面不带有函数名.如果加上函数名,那么该函数名只在函数 ...