十一前请了一天假,后面请了三天假,串起来一共休息了十二天,这期间见了女朋友的家长,也领女朋友见了我家长,好消息是各方家长反馈不错,坏消息是涨了五斤肉,毕竟是吃了12天的呼伦贝儿牛羊肉哈。玩了这么多天,回来要收收心好好工作了,毕竟要攒钱娶媳妇哈~


上班回来,按照产品的需求做了这样一个效果,如下图:

这其中包含了3个动画,分别是移动动画、放大动画、旋转动画。

前两个动画比较好完成,可以用 TranslateAnimation 和 ScaleAnimation来完成,但是第三个就比较麻烦了,因为这个旋转动画是根据 Y 轴来旋转的,而 RotateAnimation 是根据垂直屏幕的 Z 轴旋转的,所以 RotateAnimation 并不能够完成我们需要的效果,这里就需要我们去继承 Animation 去自定义动画了。

但是!!!
但是 APIdemo 里面已经实现了这个动画,so,我们拿来用就好了,下面是我贴出来的Rotate3dAnimation,其中我添加了一个构造,添加了相对自己位置的 type。

package cn.kenneth.rotate3danimation;import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;public class Rotate3dAnimation extends Animation {private int mCenterXType = ABSOLUTE;private int mCenterYType = ABSOLUTE;private final float mFromDegrees;private final float mToDegrees;private float mCenterX;private float mCenterY;private final float mDepthZ;private final boolean mReverse;private Camera mCamera;/*** Creates a new 3D rotation on the Y axis. The rotation is defined by its* start angle and its end angle. Both angles are in degrees. The rotation* is performed around a center point on the 2D space, definied by a pair* of X and Y coordinates, called centerX and centerY. When the animation* starts, a translation on the Z axis (depth) is performed. The length* of the translation can be specified, as well as whether the translation* should be reversed in time.** @param fromDegrees the start angle of the 3D rotation* @param toDegrees the end angle of the 3D rotation* @param centerX the X center of the 3D rotation* @param centerY the Y center of the 3D rotation* @param reverse true if the translation should be reversed, false otherwise*/public Rotate3dAnimation(float fromDegrees, float toDegrees,float centerX, float centerY, float depthZ, boolean reverse) {mFromDegrees = fromDegrees;mToDegrees = toDegrees;mCenterX = centerX;mCenterY = centerY;mDepthZ = depthZ;mReverse = reverse;}public Rotate3dAnimation(float fromDegrees, float toDegrees,int centerXType, float centerX, int centerYType, float centerY, float depthZ, boolean reverse) {mFromDegrees = fromDegrees;mToDegrees = toDegrees;mCenterXType = centerXType;mCenterX = centerX;mCenterYType = centerYType;mCenterY = centerY;mDepthZ = depthZ;mReverse = reverse;}@Overridepublic void initialize(int width, int height, int parentWidth, int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera = new Camera();mCenterX = resolveSize(mCenterXType, mCenterX, width, parentWidth);mCenterY = resolveSize(mCenterYType, mCenterY, height, parentHeight);}@Overrideprotected void applyTransformation(float interpolatedTime, Transformation t) {final float fromDegrees = mFromDegrees;float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);final float centerX = mCenterX;final float centerY = mCenterY;final Camera camera = mCamera;final Matrix matrix = t.getMatrix();camera.save();if (mReverse) {camera.translate(0.0f, 0.0f, mDepthZ * interpolatedTime);} else {camera.translate(0.0f, 0.0f, mDepthZ * (1.0f - interpolatedTime));}camera.rotateY(degrees);camera.getMatrix(matrix);camera.restore();matrix.preTranslate(-centerX, -centerY);matrix.postTranslate(centerX, centerY);}
}

移动动画也比较好做,点击的时候记录点击 icon 在 window 上的位置,然后传到下一个界面,计算一下偏移量。

Android 翻转动画 Rotate3dAnimation 效果相关推荐

  1. Android翻转动画(卡片翻转效果)

    文章目录 前言 需求 一.先介绍三个插值器 二.实现步骤 1.效果图 2.布局 3.逻辑判断(是否隐藏) 4.翻转动画 5.bug出现 6.bug解决 三.源码 MainActivity.java a ...

  2. android 同根动画_[转载]Android anim动画切换效果

    关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式: 1. Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放. ...

  3. Xamarin.android Activity动画切换效果实现

    http://blog.csdn.net/esunshine1985/article/details/44302903 1.在Resources--values下新建styles.xml,添加内容如下 ...

  4. android 浇水动画,【效果】html5给小树浇水,然后树长大的效果

    用到的知识点 css3  animation 和 keyframes 事件: webkitAnimationEnd  替代setTimeout     webkitAnimationEnd 事件讲解h ...

  5. Android 卡片翻转动画效果

    转载请标明出处:http://blog.csdn.net/android_mnbvcxz/article/details/78570594 Android 卡片翻转动画效果 前言 前端时间开发一款应用 ...

  6. 纯CSS创建心形翻转动画

    首先,需要创建一个元素,代码如下 <!DOCTYPE html> <html> <meta charset="utf-8"><head&g ...

  7. Android\OPhone动画分析之翻转效果

    看到很多人在问如何实现三维的翻转效果,所以今天在这里简单的给大家分析一下,其实在APIDemo中就有这样一个例子,那么我们就以其为例来学习Android中的翻转动画效果的实现,首先看一下运行效果如下图 ...

  8. Android 登录3D翻转动画效果

    Android 登录3D翻转动画效果 描述:这是一个 登录3D翻转效果的Demo. 项目代码在最后面!!!!跳转到最后 控件效果如下: 实现功能: 使页面进行3D翻转(3D翻转效果) 可通过回调监听两 ...

  9. Android,翻转卡片动画,实现翻转卡片的动画效果

    在Android设计中, 经常会使用卡片元素, 正面显示图片或主要信息, 背面显示详细内容, 如网易有道词典的单词翻转和海底捞的食谱展示. 实现卡片视图非常容易, 那么如何实现翻转动画呢? 在TB吃海 ...

最新文章

  1. 获取注解中的属性信息
  2. java原始模型模式_java设计模式--原始模型模式
  3. Failed to load the native TensorFlow runtime.
  4. mysql原生库_Mysql数据库的一些简单原生sql语句
  5. 2011年计算机一级考试题,2011年计算机一级考试试题及答案
  6. 面试官 | Java 对象不使用时为什么要赋值为 null?
  7. 前端白屏问题_深入理解前端性能监控
  8. 燃鹅小助手自动抽奖源码
  9. oracle sql索引查询,Oracle查询数据库的索引字段以及查询用索引
  10. ffplay播放摄像头
  11. 硬件笔记1:80508550三极管对管驱动电机电路(已经实测可用)
  12. Mysql内容查找替换
  13. android .dex文件,对于Android DEX文件详细说明
  14. 捋一捋Python中的Dict(下)
  15. jasypt 配置文件加解密
  16. P1598 垂直柱状图(模拟)
  17. SAP 物料评估类未填写
  18. 展会推广有哪些好的创意 怎样让展会推广更有创意
  19. cas登录成功什么意思_单点登录系统和CAS的简介
  20. python制作词典软件_AlphaDict: 它是一个轻量级的开放词典格式的开源词典软件,你可以制作自己的词典, 也是一个跨平台的软件支持 linux, unix and windows....

热门文章

  1. ubuntu下终端锁屏设置
  2. 数据分析指标名词解释
  3. 3个阶段 项目征名_三渣半年的量,也就三天看完了搞得自己也想写一本,众筹征名了...
  4. 2018始于MySql,终于晚安计划
  5. python自动制作word_办公自动化5_用Python批量生成word版邀请函
  6. 常用的图数据库对比(Neo4j、FlockDB、AllegroGrap、GraphDB、InfiniteGraph、TITAN、OrientDb)
  7. int 为什么是2147483647_为什么宏INT_MIN要写成-2147483647-1
  8. Docker 15 Compose
  9. pytest-fixture应用
  10. 6招深入进行 Cocos 卡牌游戏优化!《新斗罗大陆》研发团队经验分享