位置: 编程技术 - 正文

[置顶] Android自定义动画类——实现3D旋转动画([置顶]JM259194)

编辑:rootadmin

推荐整理分享[置顶] Android自定义动画类——实现3D旋转动画([置顶]JM259194),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:[置顶]星陨计划,[置顶]公主大人接下来是拷问时间31,[置顶]bilinovel,[置顶]JM259194,[置顶]JM259194,[置顶]JM259194,[置顶]bilinovel,[置顶]电影名字《收件人不详》,内容如对您有帮助,希望把文章链接给更多的朋友!

Android中的补间动画分为下面几种: (1)AlphaAnimation :透明度改变的动画。 (2)ScaleAnimation:大小缩放的动画。 (3)TranslateAnimation:位移变化的动画。 (4)RotateAnimation:旋转动画。

然而在实际项目中透明度、缩放、位移、旋转这几种动画并不能满足我们的需求,比如我们需要一个类似下面的3D旋转动画。

这时候就需要用到自定义动画,自定义动画需要继承Animation,并重写applyTransformation(float interpolatedTime, Transformation t)方法和initialize方法。

applyTransformation方法中的两个参数说明:

interpolatedTime: 该参数代表了时间的进行程度(如:你设置的时间是ms, 那么interploatedTime就会从0开始一直到1,当该参数为1时表明动画结束)

Transformation: 代表补间动画在不同时刻对图形或组建的变形程度。该对象中封装了一个Matrix对象,对它所包含的Matrix对象进行位移、倾斜、旋转等变换时,Transformation将会控制对应的图片或视图进行相应的变换。

initialize(int width, int height, int parentWidth, int parentHeight)函数,这是一个回调函数告诉Animation目标View的大小参数,在这里可以初始化一些相关的参数,例如设置动画持续时间、设置Interpolator、设置动画的参考点等。

为了控制图片或View进行三维空间的变换,还需要借助于Android提供的一个Camera类,该类是一个空间变换工具,作用有点类似于Matrix,提供了如下常用的方法。

getMatrix(Matrix matrix) :将Camera所做的变换应用到指定的maxtrix上 rotateX(float deg):将目标组件沿X轴旋转 rotateY(float deg)、 rotateZ(float deg) translate(float x, float y, float z):把目标组件在三维空间类进行位移变换。 applyToCanvas(Canvas canvas):把Camera所做的变换应用到Canvas上。

初级应用——代码中创建动画

下面我们先来个简单的实现, 只在activity中创建动画 ,而不使用xml文件的方式来创建动画。 具体实现如下: 自定义rotate3dAnimation 继承自Animation ,并重写applyTransformation(float interpolatedTime, Transformation t)方法。

在activity中的使用方法和 使用ScaleAnimation等动画没什么两样。

activity中的代码如下:

现在我们已经初步掌握了自定义动画类的使用,但是仅在代码中创建动画是不够的,我们很多情况下也需要在xml文件中创建动画。那该怎么办呢?

高级应用——XML创建动画[置顶]
        Android自定义动画类——实现3D旋转动画([置顶]JM259194)

使用XML创建动画的过程有点类似于自定义控件的使用。

(一) 在attrs.xml文件中设置自定义属性

attrs.xml

(二) 获取自定义属性

下面 我们就需要修改下我们的rotate3dAnimation类,在其中获取xml文件中声明的自定义属性并解析。

Rotate3dAnimation.class

最后 ,我们在anim动画文件中使用我们自定义的动画类和属性就好了。 注意,在xml中使用自定义动画类的时候,需要自定义我们的命名空间,在使用动画标签的时候需要加上命名控件:包名。

rotate3d.xml

接下来,在activity中使用AnimationUtil的loadAnimation方法来加载我们的xml动画文件。

好了,“大功告成”(真的这样么。。)! 运行一下试试!!!

哎? 怎么回事? 运行竟然报错了????!!!!

这是什么原因呢?

修改AnimationUtils 源码

通过查看AnimationUtils.loadAnimation源代码我们知道,在其从xml载入动画类的时候,只认alpha、scale、rotate、translate这几个SDK自带的动画类,而我们写入的自定义动画类Rotate3dAnimation会导致其报Unknown animation name的异常。官方SDK也没有提供解决这个问题的其他API方法,那么怎么解决呢? 很简单,只需在原有的AnimationUtils.loadAnimation源码上改动一行,通过java中的反射机制,通过包名从ClassLoader载入自定义动画类即可。将其源码拷贝过来,实现一个自己的loadAnimation方法,如下:

然后修改我们的activity中的代码 只需要将系统的AnimationUtils换成我们自己的MyAnimationUtils就行了。

这次才是真正的大功告成!!!

**

源码奉送

**

Android学习之路(六)之 Activity的生命周期 Activity的生命周期一个Activity从被创建到被销毁都有一定的过程,这样的过程我们称之为Activity的生命周期。对于Activity的生命周期,有这样一个图来描述

如何使用ApkPlug插件化我的第一个应用 Apkplug最大的亮点就在于它的强大功能-插件化apk,就是多个APK在一个APK上运行,可实现应用内更新等需求。还可以搭建聚合广告,聚合支付等平台。今天

带滑动删除的Dummynote 介绍:首先这个应用是结合了我之前做的Dummynote,那个note的删除主要靠的是长按后的ContextMenupublicvoidonCreateContextMenu(ContextMenumenu,Viewv,ContextMenuInfomenuInfo){

标签: [置顶]JM259194

本文链接地址:https://www.jiuchutong.com/biancheng/371074.html 转载请保留说明!

上一篇:android图文列表(android图片布局)

下一篇:Android学习之路(六)之 Activity的生命周期(android自学之路)

  • 什么情况下纳税人和负税人一致
  • 个体工商户的报税流程
  • 冲回多提的坏账准备分录为
  • 计入存货成本的税费
  • 什么发票可以抵扣增值税
  • 滞纳金按什么比例算
  • 建筑工程查帐征收税
  • 库存完工产品属于什么会计科目,什么类别
  • 煤炭企业生产成本包括
  • 不得抵扣的进项税额转出会计分录
  • 劳动法相关法规
  • 在建投资性物业管理办法
  • 上期计提的费用是什么
  • 建筑企业预缴增值税计算
  • 违约金抵扣货款等于现金折扣吗会计分录
  • 汇算清缴弥补以前年度亏损报表怎么填
  • 压覆矿产赔偿标准法律依据
  • 未分配利润可以转盈余公积吗
  • 返税怎么操作流程
  • 咨询服务费属于什么会计科目
  • 公司账户境外汇款
  • 稿酬所得个人所得税税率
  • 汽修厂纳税多少
  • 所得税汇算成本调减会计分录
  • 卖出别人赠送的东西会计分录?
  • 不计提折旧的固定资产是()
  • 所得税费用属于损失吗
  • 每年的发票年底是不是就失效了
  • 企业赠送客户产品如何账务处理
  • 腾讯电脑管家网址多少
  • dev beta 发布预览
  • win10补丁kb5005543
  • PHP:imageellipse()的用法_GD库图像处理函数
  • 前端gui
  • 未交土地出让金的处罚
  • 机器学习论文源代码浅读:Autoformer
  • 汽车4s店一般会摆放什么小零食
  • 应交税费的主要成本
  • while循环语法结构
  • 怎样在网上领取
  • 支付对价的公允价值的处理
  • 会计期末业务有哪些?
  • 计提缴纳企业所的会计分录怎么写
  • sqlserver存储过程语法
  • sql server 内存管理
  • 无资产可执行啥意思
  • 以前年度损益调整结转到本年利润吗
  • 某首饰商城为增值税一般纳税人,2021年1月发生以下业务
  • 企业注销时实收资本怎么处理
  • 税务稽查其他应付款
  • 出租车费用分录
  • 所得税会计凭证包括哪些
  • 应付股利计提了长期不支付
  • 资产减值损失属于营业外支出吗
  • sp_executesql 使用复杂的Unicode 表达式错误的解决方法
  • mysql在cmd命令操作
  • 数据库高并发怎么解决
  • CentOS EXT4文件系统的详解
  • soapui安装与配置
  • 升级到xp系统以后怎么办
  • 如何在Windows下移动文件
  • info.exe是什么病毒
  • win8查看内存
  • 怎样把系统及软件迁移到固态
  • Linux系统怎么重启网卡
  • 怎么使用linux
  • linux igb
  • 如何解决win7系统不稳定
  • BootStrap TreeView使用实例详解
  • Interlnk、Intersvr、Qbasic命令的使用方法
  • perl中的$_
  • node.js 配置
  • 安卓手机管家怎么关闭
  • android studio常用控件
  • 被认为是税务风险的原因
  • 开票地税怎么算的
  • 2022年房产税减免政策疫情
  • 建筑企业所交的税项有多少
  • 法院拍卖的预售房产怎么交税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设