在安卓的开发中,有时候会遇到需要3D翻转的动画,我在这次项目的开发中也遇到了,效果实现了,但是最终没有采用,于是写篇博客,方便于以后使用‘

下面是效果图:

下面贴出来的是一个自定义的封装好的3D动画实现类,在以后的项目中是可以直接使用的

package com.renruihr.www.doraemon;
import android.graphics.Camera;
import android.graphics.Matrix;
import android.view.animation.Animation;
import android.view.animation.Transformation;public class Rotate3dAnimation extends Animation {// 开始角度private final float mFromDegrees;// 结束角度private final float mToDegrees;// 中心点private final float mCenterX;private final float mCenterY;private final float mDepthZ;// 是否需要扭曲private final boolean mReverse;// 摄像头private Camera mCamera;/**** @param fromDegrees   开始角度* @param toDegrees 要求转到的角度* @param centerX   旋转中心点的X坐标* @param centerY   旋转中心点得Y坐标* @param depthZ    攒转中心点的Z坐标* @param reverse   图片是否需要扭曲*/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;}@Overridepublic void initialize(int width, int height, int parentWidth,int parentHeight) {super.initialize(width, height, parentWidth, parentHeight);mCamera = new Camera();}// 生成Transformation@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);}
}

以上是一个封装好的3D动画实现类,如果需要使用,则需在Activity中进行调用,下面是调用的代码

package com.renruihr.www.doraemon;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.widget.ImageView;/*** Created by Doraemon on 15/10/14.*/
public class AnimationActivity extends Activity{ImageView iv_image;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animation);initLyout();initListener();initData();}private void initLyout(){iv_image = (ImageView) findViewById(R.id.iv_image);}private void initListener(){findViewById(R.id.btn_animation_anniu1).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {applyRotation(0,360);}});}private void initData(){}//3D动画实现类public void applyRotation(float start,float end) {//获取旋转的中心final float centerX = iv_image.getWidth() / 2.0f;final float centerY = iv_image.getHeight() / 2.0f;final Rotate3dAnimation rotation = new Rotate3dAnimation(start, end, centerX, centerY, 0.0f, true);rotation.setDuration(2000);rotation.setFillAfter(true);//定义了动画的变化速度rotation.setInterpolator(new LinearInterpolator());//设置监听
//        rotation.setAnimationListener(new DisplayNextView());iv_image.startAnimation(rotation);}
}

Android自定义动画之实现3D翻转的动画相关推荐

  1. android 自定义view 动画效果,Android自定义view实现阻尼效果的加载动画

    效果: 需要知识: 1. 二次贝塞尔曲线 2. 动画知识 3. 基础自定义view知识 先来解释下什么叫阻尼运动 阻尼振动是指,由于振动系统受到摩擦和介质阻力或其他能耗而使振幅随时间逐渐衰减的振动,又 ...

  2. android dialog 消失动画,android 自定义dialog弹出和消失缩放动画

    本文转自:android 自定义dialog,窗口动画 Java代码: package com.sunxu.org.IndividualityDialog; import Android.app.Ac ...

  3. Android自定义View如此简单 实现点击动画+进度刷新的提交/下载按钮(填坑面试题)

    SubmitButton 背景 实现思路 继承View 面试题:构造方法如何选择 自定义属性 面试题:styleable.AttributeSet.TypedArray的关系 测量宽高 面试题:UNS ...

  4. android的动态tab,Android自定义view仿QQ的Tab按钮动画效果(示例代码)

    话不多说 先上效果图 实现其实很简单,先用两张图 一张是背景的图,一张是笑脸的图片,笑脸的图片是白色,可能看不出来.实现思路:主要是再触摸view的时候同时移动这两个图片,但是移动的距离不一样,造成的 ...

  5. gif透明背景动画_ppt模板3D卡通GIF动画PPT素材,多种多样的日常动作

    ppt模板--3D卡通GIF动画PPT素材 这套3D卡通GIF动画PPT素材结合了多种小人造型,有:看书.坐飞机.骑车.开车.吵架.开会.上班.打字.讨论等多种多样的日常动作. 识别关注回复:「免费 ...

  6. unity3d 动画制作_Unity 3D中的动画和动画制作

    unity3d 动画制作 Animation is one among the two components of a game, which brings it to life (the other ...

  7. 3d翻转 ios_iOS动画特效之立方体翻转

    先来看看效果: 下面进入正题,是时候展现真正的技术了: 首先在控制器里添加一个scrollView,再在scrollView上的对应位置上添加要展示的imageView(立方体视图组),当然也可以放上 ...

  8. android 按钮添加动画,Android 自定义View画出按钮加载动画~

    声明:原创作品转载请注明出处http://www.jianshu.com/p/a0ffbc04c089 看了太多别人的文章,我觉得我也应该写点什么了~一是巩固自己的知识,二是共同学习,敢说我做的不好我 ...

  9. android左右旋转动画效果图,Android新姿势:3D翻转效果原理

    首先,android里是没有3D翻转的动画效果的,但是呢,android有提供一个Camera的类,可以利用这个类来实现. 先看代码,Rotate3d是继承了Animation的一个动画类,多余的代码 ...

  10. kankan转载:Android实现3d翻转效果

    Android中并没有提供直接做3D翻转的动画,所以关于3D翻转的动画效果需要我们自己实现,那么我们首先来分析一下Animation 和 Transformation. Animation动画的主要接 ...

最新文章

  1. 深度学习中的网络表征学习的算法目标简介
  2. Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT.
  3. 18.用宏定义实现 得到两个数的最值
  4. Winform控件-DevExpress18下载安装注册以及在VS中使用
  5. Windows Mobile 5
  6. cocos creator 方法数组_基于 Cocos 游戏引擎的音视频研发探索
  7. 贺利坚老师汇编课程35笔记:[BX+SI]和[BX+DI]寻址
  8. HTML5/CSS3笔记
  9. tidb mysql主从复制_如何配置MySQL数据库主从复制
  10. error: implicit declaration of function ‘RAND_egd’ [-Werror=implicit-function-declaration]
  11. 2017年IT168技术卓越奖评选获奖名单:投影篇
  12. 计算机专业学微机原理与接口技术,信息技术学院计算机科学与技术专业《微机原理与接口技术.doc...
  13. ARM学习day6-->看门狗定时器
  14. 产品经理如何写PRD文档[最全]
  15. 【产品经理】大学生知识库
  16. TECO状态的生产订单结算到在制品怎么办?
  17. 跟我一起来申请邓白氏编码
  18. java和python哪个好?学java和学python哪个更有前途?
  19. 互联网行业职位介绍——PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等
  20. 从计数器逻辑中揭秘神奇的HDL

热门文章

  1. es6 模板字变量和字符串占位符
  2. Distinct去除集合中的重复项GetHashCode方法没有返回obj.GetHashCode()导致出错
  3. spark练习--统计xxx大学的各个少数名族的情况
  4. 关于log4net 生成多个文件夹的解决方案。
  5. linux 用户管理、权限管理
  6. silverlight寻奇
  7. 《疯狂Java讲义》(十八)---- JAR文件
  8. NSTimer的使用
  9. jQuery模拟鼠标点击事件失效的问题
  10. C++程序设计随笔(二)