Sliding Fragment

作者:小文字
 

介绍:该案例为传统的Fragment增加了个性化的补间动画,其效果是原有fragment向屏幕内做一定的下沉,新的fragment显示在最上层,产生层叠效果的多个fragments。
Video: http://www.youtube.com/watch?v=xbl5cxfA1n4

Source:http://developer.android.com/shareables/devbytes/SlidingFragments.zip

本文将简单分析其实现流程及原理
Step1:添加Fragment并设置点击的切换事件
首先添加一个fragment,并设置显示内容已做区别,案例中显示了一张图片,接着设置单击事件,为了使得我们单击任意位置都能触发fragment的切换动画,这
里需要为用于展示图片的fragment,显示文本的fragment以及黑色背景view都添加该事件监听器。

Step2:fragment切换实现
这里只有2个fragment,一个是用于显示图片,另一个显示文本,预期效果是单击屏幕后,图片下沉,文本显示到顶层,再次单击后则恢复原状,即,文本消失>,图片上浮。
分析这些动画的顺序和效果,图片的下沉可以通过一个组合animation来做,1.缩放,例如缩小为原图80%,2.旋转,这里的下层效果是首先图片x轴旋转40度,>然后再将旋转角度设置为0,3.添加一个半透明的遮罩,以示图片当前出于幕后状态,

文本的出现则在图片的动作完成后,通过manager动态讲其添加到画面上,这里的文本不是全屏的,否则就看不到后面的图片背景,文本的出现也可以添加动画>,这里文本出现时由下至上,消失时由上至下。

private void switchFragments () {
if (mIsAnimating) {
return;
}
mIsAnimating = true;
if (mDidSlideOut) {
mDidSlideOut = false;
getFragmentManager().popBackStack();
} else {
mDidSlideOut = true; AnimatorListener listener = new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator arg0) {
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.setCustomAnimations(R.animator.slide_fragment_in, 0, 0,
R.animator.slide_fragment_out);
transaction.add(R.id.move_to_back_container, mTextFragment);
transaction.addToBackStack(null);
transaction.commit();
}
};
slideBack (listener);
}
}

Android——Fragment过度动画分析一(转)的更多相关文章

  1. Fragment过度动画分析一

    Sliding Fragment 介绍:该案例为传统的Fragment增加了个性化的补间动画,其效果是原有fragment向屏幕内做一定的下沉,新的fragment显示在最上层,产生层叠效果的多个fr ...

  2. [Android]Fragment自定义动画、动画监听以及兼容性包使用

    Fragment是Android在API 11之后加入的一个组件,对提高Android开发中的布局合理性和布局效率都有很大作用,尤其是在Android平板等大屏幕设备的开发中,Fragment的引入能 ...

  3. Android -- Fragment动画异常Unknown animation name: objectAnimator

    异常 Caused by: java.lang.RuntimeException: Unknown animation name: objectAnimator 异常代码 FragmentTransa ...

  4. Android编程之Fragment使用动画造成Unknown animation name: objectAnimator异常

    在为Fragment做切换动画.启动后遇到了一个异常: Caused by: java.lang.RuntimeException: Unknown animation name: objectAni ...

  5. [Android]Fragment源代码分析(二) 状态

    我们上一讲,抛出来一个问题,就是当Activity的onCreateView的时候,是怎样构造Fragment中的View參数.要回答这个问题我们先要了解Fragment的状态,这是Fragment管 ...

  6. Android Fragment使用(二) 嵌套Fragments (Nested Fragments) 的使用及常见错误

    嵌套Fragment的使用及常见错误 嵌套Fragments (Nested Fragments), 是在Fragment内部又添加Fragment. 使用时, 主要要依靠宿主Fragment的 ge ...

  7. Android 坐标系和 MotionEvent 分析、滑动

    1.Android坐标系 在Android中,屏幕最左上角的顶点作为Android坐标系的原点,这个点向左是X轴正方向,这个点向下是Y轴正方向. 系统提供了getLocationOnScreen(in ...

  8. Android Fragment详解

    一.什么是Fragment Android在3.0中引入了fragments的概念,主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计.平板电脑的屏幕要比手机的大得多,有更多的 ...

  9. 关于v4包的Fragment过渡动画的事件监听无响应问题解决

    项目中部分功能模块采用了单Activity+多Fragment模式,当Fragment切换时,需要在过渡动画执行完后做一些操作,通常就是在自己封装的FragmentBase中重写onCreateAni ...

随机推荐

  1. nmapport状态解析

  2. ASTER:An Attentional Scene Text Recognizer with Flexible Rectification

    代码链接:https://github.com/bgshih/aster 方法概述 本文方法主要解决不规则排列文字的文字识别问题,论文为之前一篇CVPR206的paper(Robust Scene T ...

  3. Java 8 flatMap example

    Java 8 flatMap example In Java 8, Stream can hold different data types, for examples: Stream<Stri ...

  4. CentOS下配置redis允许远程连接

    1. 目的 因为想要学习redis,因此在虚拟机中安装了redis,为了实现在物理机可以访问redis,弄了好久:因此记录下来,以免忘记. 2. 环境 虚拟机:CentOS Linux release ...

  5. unity, 删除animationClip中的position曲线

    删除clip中所有的position曲线: using UnityEngine; using System.Collections; using UnityEditor; public class r ...

  6. PHP use关键字概述

    PHP中的use关键字的用法. 很多开源系统如osCommerce框架中,都会在其源码中找到use这个关键字,如osCommerce框架中就在index.php文件中出现了这段源码:use osCom ...

  7. Atitit js canvas的图像处理类库attilax总结与事业

    Atitit js canvas的图像处理类库attilax总结与事业 1.1. 脸部识别JavaScript类库Tracking.js1 1.2. AlloyImage特性1 1.3. CamanJ ...

  8. 互联网创业原则与创业模式attilax大总结

    互联网创业原则与创业模式attilax大总结 1. 适合普通人的的创业模式1 1.1. 网络创业  兼职创业 概念创业 团队 创业  内部创业..1 2. 创业模式大总结1 2.1. 工作室创业1 2 ...

  9. 利用javapns对IOS进行推送

    start package com.jynine.javapns; import java.io.FileNotFoundException; import java.io.IOException; ...

  10. Fluent UDF【5】:第一个UDF

    这里以一个简单的初始化案例来描述UDF的使用过程. 0 Fluent中的Patch Fluent中提供了全域初始化以及局部Patch功能.对于整体区域的全局初始化可以采用starndard及hybri ...