Android---显示卡片翻转的动画效果

本文译自:http://developer.android.com/training/animation/cardflip.html

本文介绍如何是一个自定义的Fragment动画来制作卡片翻转动画。卡片翻转动画是在内容视图之间模拟卡片翻转的效果。

创建动画器

创建用于卡片翻转的动画,需要两个用于前景的动画器,它们会让卡片的前景向左侧退出,从左侧进入。还需要两个用于背景的动画器,它们会让卡片的背景从右侧进入,向右侧退出。

card_filp_left_in.xml

android:valueFrom="1.0"

android:valueTo="0.0"

android:propertyName="alpha"

android:duration="0" />

android:valueFrom="-180"

android:valueTo="0"

android:propertyName="rotationY"

android:interpolator="@android:interpolator/accelerate_decelerate"

android:duration="@integer/card_flip_time_full" />

android:valueFrom="0.0"

android:valueTo="1.0"

android:propertyName="alpha"

android:startOffset="@integer/card_flip_time_half"

android:duration="1" />

card_flip_left_out.xml

android:valueFrom="0"

android:valueTo="180"

android:propertyName="rotationY"

android:interpolator="@android:interpolator/accelerate_decelerate"

android:duration="@integer/card_flip_time_full" />

android:valueFrom="1.0"

android:valueTo="0.0"

android:propertyName="alpha"

android:startOffset="@integer/card_flip_time_half"

android:duration="1" />

card_flip_right_in.xml

android:valueFrom="1.0"

android:valueTo="0.0"

android:propertyName="alpha"

android:duration="0" />

android:valueFrom="180"

android:valueTo="0"

android:propertyName="rotationY"

android:interpolator="@android:interpolator/accelerate_decelerate"

android:duration="@integer/card_flip_time_full" />

android:valueFrom="0.0"

android:valueTo="1.0"

android:propertyName="alpha"

android:startOffset="@integer/card_flip_time_half"

android:duration="1" />

card_flip_right_out.xml

android:valueFrom="0"

android:valueTo="-180"

android:propertyName="rotationY"

android:interpolator="@android:interpolator/accelerate_decelerate"

android:duration="@integer/card_flip_time_full" />

android:valueFrom="1.0"

android:valueTo="0.0"

android:propertyName="alpha"

android:startOffset="@integer/card_flip_time_half"

android:duration="1" />

创建View

“卡片”每个面都是一个独立的布局,布局中可以包含任何你想要的内容,如文字、图像,或者是任意View的组合。然后,要在随后的Fragment动画中使用这两个布局。以下是创建了一个显示“卡片”文本面的布局:

android:layout_height="match_parent"

android:orientation="vertical"

android:background="#a6c"

android:padding="16dp"

android:gravity="bottom">

style="?android:textAppearanceLarge"

android:textStyle="bold"

android:textColor="#fff"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/card_back_title" />

android:textAllCaps="true"

android:textColor="#80ffffff"

android:textStyle="bold"

android:lineSpacingMultiplier="1.2"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="@string/card_back_description" />

以下是显示“卡片”图片面的布局

android:layout_height="match_parent"

android:src="@drawable/image1"

android:scaleType="centerCrop"

android:contentDescription="@string/description_image_1" />

创建Fragment

给“卡片”的前后两面创建Fragment类。这些Fragment类会在它的onCreateView()方法中返回你之前创建的布局。然后,在你要显示卡片的Activity中创建相应的Fragment类的实例。以下实例说明了嵌入到它的父Activity内部的Fragment类的使用方法:

publicclassCardFlipActivityextendsActivity{...

/**

* A fragment representing the front of thecard.

*/

public class CardFrontFragment extends Fragment {

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,

Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_card_front,container, false);

}

}

/**

* A fragment representing the back of thecard.

*/

public class CardBackFragment extends Fragment {

@Override

public View onCreateView(LayoutInflaterinflater, ViewGroup container,

Bundle savedInstanceState) {

return inflater.inflate(R.layout.fragment_card_back,container, false);

}

}

}

让卡片翻转

现在,你需要在一个父Activity内显示Fragment。首先给你的Activity创建布局。下例中创建了一个可以在运行时添加Fragment的FrameLayout布局:

android:layout_width="match_parent"

android:layout_height="match_parent" />

在Activity代码中,把内容视图设置给刚刚创建的布局。这也是创建Activity时,显示默认Fragment的好主意,因此下例会说明如何显示默认的“卡片”的前面:

publicclassCardFlipActivityextendsActivity{@Override

protected void onCreate(BundlesavedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_activity_card_flip);

if (savedInstanceState == null) {

getFragmentManager()

.beginTransaction()

.add(R.id.container, new CardFrontFragment())

.commit();

}

}

...

}

现在,你有了卡片的前景显示,这样就可以在适当的时候,用翻转动画来显示卡片的背景。以下是创建一个用于显示卡片另一面的方法的步骤:

1.给Fragment变换设置自定义动画;

2.用一个新的Fragment来替换当前的的Fragment,并且使用你创建的动画让这个事件动起来;

3.把被替换的Fragment添加到Fragment的回退堆栈中,以便在用户按下回退按钮时,该卡片会翻转返回。

privatevoidflipCard(){if (mShowingBack) {

getFragmentManager().popBackStack();

return;

}

// Flip to the back.

mShowingBack = true;

// Create and commit a newfragment transaction that adds the fragment for the back of

// the card, uses customanimations, and is part of the fragment manager's back stack.

getFragmentManager()

.beginTransaction()

// Replace the default fragment animations with animator resourcesrepresenting

// rotations when switching to the back of the card, as well asanimator

// resources representing rotations when flipping back to the front(e.g. when

// the system Back button is pressed).

.setCustomAnimations(

R.animator.card_flip_right_in, R.animator.card_flip_right_out,

R.animator.card_flip_left_in, R.animator.card_flip_left_out)

// Replace any fragments currently in the container view with afragment

// representing the next page (indicated by the just-incrementedcurrentPage

// variable).

.replace(R.id.container, new CardBackFragment())

// Add this transaction to the back stack, allowing users to pressBack

// to get to the front of the card.

.addToBackStack(null)

// Commit the transaction.

.commit();

}

android 卡片旋转动画,Android-显示卡片翻转的动画片效果相关推荐

  1. android 卡片旋转动画,Android 卡片翻转效果

    Android 卡片翻转效果使用的Cramre来完成 记录一下: 一个好用的3D旋转工具类 oid.graphics.Matrix; import android.util.Log; import a ...

  2. android 360旋转动画,ANDROID——仿360手机卫士的旋转打分控件

    简介 灵感源自360手机卫,主要功能就是实现显示评分或等级的效果.并稍微改良了一下,有更好的实用性和扩展性. 因为主要用途就是显示"分数","评价",所以暂且叫 ...

  3. android 无限旋转动画,Android 属性动画之无限循环缩放动画,旋转动画

    缩放动画 AnimatorSet animatorSetsuofang = new AnimatorSet();//组合动画 ObjectAnimator scaleX = ObjectAnimato ...

  4. android 无限旋转动画,android ——不停旋转动画

    xml文件 ``` android:fromDegrees="359" android:toDegrees="0" android:duration=" ...

  5. android无限旋转动画,android animation rotate 图片无限循环旋转

    需要保持界面风格一致,告诉用户正在加载,用animation实现,很简单 android:interpolator="@android :anim/cycle_interpolator&qu ...

  6. js 卡片交换动画,网格卡片交换动画,排序算法动画,三消游戏交换动画

    平铺卡片交换动画: 网格卡片交换动画: 排序算法动画: 代码: <!DOCTYPE html> <html lang="en"><head>&l ...

  7. android 淡入位移动画,Android动画 translate(位移)、scale(缩放)、alpha(淡入淡出)、rotate(旋转)...

    一.Android动画类型 Android的animation由四种类型组成 在xml文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画 ...

  8. android 缩放透明动画,Android旋转、平移、缩放和透明度渐变的补间动画

    android实现旋转.平移.缩放和透明度渐变的补间动画,具体实现如下: 1.在新建项目的res目录中,创建一个名为anim的目录,并在该目录中创建实现旋转.平移.缩放和透明度渐变的动画资源文件. 透 ...

  9. android imageview图片旋转动画,Android 安卓动画 属性动画 - 旋转动画

    引入 属性动画的出现,弥补了补间动画的不足之处,补间动画,只是改变了表面上的东西,但是其中属性并未改变,而属性动画相反,改变了表面上的东西,并且也更改了其属性. 类:ObjectAnimator 用于 ...

最新文章

  1. 狂神说Java 之SpringBoot整合Shiro框架笔记!
  2. 这不是特效也不是魔术!
  3. C语言方向键识别和字母识别,c语言中怎样输入和读取方向键
  4. 开发步骤_直播软件开发直播APP开发具体步骤
  5. 最新android studio创建项目,创建项目  |  Android 开发者  |  Android Developers
  6. windows下bat批处理实现守护进程
  7. 收文处理和发文处理的环节_液相色谱使用中样品预处理需要注意的几个环节汇总!...
  8. JAVAWeb使用POI做导出Excel
  9. 人工智能和计算机程序有什么区别,AI与计算机程序的区别?
  10. MFC Ribbon界面设计
  11. 前端web开发培训,HTML表格标签,先收藏了
  12. springboot高校教室排课系统的设计与实现毕业设计-附源码221556
  13. This request has been blocked; the content must be served over HTTPS
  14. 计算机专业核心期刊好发吗,计算机核心期刊容易发吗
  15. H5标签在页面被转译
  16. 用什么方法可以将Word转换成PDF文档?
  17. 如何快速学习:掌握任何技能的 10 种行之有效的方法
  18. Java基础|一图总结Java File类(与IO密切相关)
  19. 军智与民智中几个问题的探讨
  20. java操作word、excel、pdf 下载添加水印

热门文章

  1. 苹果三大软肋:云计算社交产品和互联网电视
  2. 网络空间安全---常见网络漏洞
  3. ZYNQ学习之旅--PS_QSPI读写flash
  4. 快一起来看看如何把音频转化为文字吧
  5. python网络安全实战_Python安全攻防:渗透测试实战指南
  6. Ubuntu/linux下最强大的下载工具-aria2
  7. unity打开Excel/Word/PPT
  8. socket(四)–组播
  9. 双硬盘装linux系统安装教程,双硬盘安装XP和Ubuntu互不影响之简易方法
  10. HTML生日快乐代码 HTML5七夕情人节表白【粉色烂漫的七夕情人节专题页面】 HTML5七夕情人节表白网页源码 html css javascript