属性动画

本文详细介绍了Android中的动画实现方式,包括帧动画和补间动画的概念、应用场景及创建方法,并深入探讨了3.0之后引入的属性动画,提供了丰富的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >





动画 


有道地址: http://note.youdao.com/noteshare?id=2b872250a6f97b877e48aab26069834b&sub=D0C3896DD6424D5DAA0E5D0AFF8B4892

 http://note.youdao.com/noteshare?id=1118ead60b64fe5ffb4a65eecf2ed502&sub=67E44160F15E453EB7D9F433F5D14FC9
 
 一, 分类


 3.0以前  2种
 
帧动画    Frame Animation  -- Drawable Animation


一帧一帧的把一组图片播放出来



创建方法 -- 2中


资源文件
/*
* 1, 在res/drawable 文件中创建一个xml 个是的文件, 根节点为<animation-list></animation-list>
* 2, 需要在根节点中, 添加每一帧图片
*      <item  android:drawable="图片的id" android:duration="持续的时间 (毫秒)"/>
* 3, 在布局页面中, ImageView 控件中引入 :  <ImageView  android:background = "帧动画资源的id"/>
* 4, 在Activity 中, 得到动画资源管理器对象
*      AnimationDrawable animationDrawable = (AnimationDrawable)mIv.getBackground();
* 5, 调用      animationDrawable.start() ; 开启动画
* 6, 调用      animationDrawable.stop(); 停止动画
*/
代码创建
/**
*  代码的方式创建帧动画
*  1, 初始化动画管理器对象
*      AnimationDrawable drawable = new AnimationDrawable();
*  2, 向动画管理器中添加图片资源
*      drawable.addFrame(Drawable类型的图片, 持续时间 毫秒);
*  3, 设置动画是否执行一次
*      drawable.setOneShot(false); // true 执行一次; false 执行多次
*  4, 将动画资源, 设置到图片中
*      mIv.setImageDrawable(drawable);
*  5, 调用方法 start() 开启动画  --- drawable.isRunning()  判断动画是否正在执行
*      drawable.start();
*  6, 调用方法 stop() 停止动画
*      drawable.stop();
*/




补间动画  Tween Animation   -- View Animation


概念:  开发者值需要指定开始和结束动画, 中间有系统自动补齐


分类:   渐变  缩放   旋转    位移    集合


创建方式:


资源文件


存放的目录:  res/anim


渐变   <alpha/> 
缩放   <scale/>
旋转   <rotate/>
位移   <translate/>
集合   <set/>


步骤:


/**
* 资源文件创建的补间动画
* 1, res 的文件夹中 , 创建 anim文件夹
* 2, 在res/anim 文件夹中, 创建一个xml 个是的动画, 根节点<alpha , scale, rotate,translate, set>
* 3, 在Activity 中, 启动动画
*     mIv.startAnimation(AnimationUtils.loadAnimation(上下文对象, 动画的资源id));
*/


代码创建

/**
* 代码创建补间动画

* 1, 声明每一种动画资源, 设置参数信息
* 2, 设置持续时间
* 3, 为控件启动动画
*      mIv.startAnimation(animation);
*
*/




 补间动画 --- 实现Activity 的切换动画  -- //只能是补间动画完成




//添加切换的动画  -- 补间动画  -- res/anim 文件夹
//进入时的动画 -- InfoActivity, 退出时的动画 -- MainActivity
overridePendingTransition(R.anim.enter_anim,R.anim.exit_anim);

X ---->  -100% 左侧    0%当前   100% 右侧


Y ---->  -100% 上方    0%当前   100% 下方


 3.0以后 属性动画  Property Animation


通过属性动画的方式改变控件的属性, 属性动画更改的是对象的实际属性


而补间动画, 更改的View 的绘制效果, 真正的属性依然保留在以前的位置上


总结:   属性动画是 补间动画的升级版




创建:


存放路径:  res/animator


单个动画:  <objectAnimator/>  -- 区分是什么类型的动画


 通过属性来区分:  android:propertyName = "属性名称"


属性名称:  


位移:  translationX  translationY


旋转:  rotation    rotationX   rotationY


缩放:  scaleX      scaleY


透明:  alpha


集合动画:  <set></set>




创建方式 --- 2中


资源文件


/**
* 资源文件 , 创建属性动画

* 1, 在res 中 创建文件夹, animator 文件夹, 在该文件夹中, 创建xml 的文件

* 2, 在文件中创建动画
*     单个动画 ---  <objectAnimator></objectAnimator> 
*     多个动画 ---  <set></set>
*     
* 3, 在Activity 中加载动画
*      3.1  加载动画资源  -- 动画加载器 AnimatorInflater
*      ObjectAnimator animator = AnimatorInflater.loadAnimator(上下文对象, 动画资源的id);
*      3.2  设置执行该动画的控件
*      animator.setTarget(mIv);
*      3.3  启动动画
*      animator.start();
*/




代码创建



/**
* 1, 定义动画对象
* 执行动画的控件,  动画的属性名称 , 动画的属性值 -- 可变长度的数组
*      属性名称:
位移:  translationX  translationY
旋转:  rotation    rotationX   rotationY
缩放:  scaleX      scaleY
透明:  alpha
*  ObjectAnimator alpha =  ObjectAnimator.ofFloat(mIv,"alpha",1.0f,0.0f,1.0f);
 
* 2, 设置动画的持续时间
*  alpha.setDuration(5000);
*  3, 启动动画
*  alpha.start();
*/



集合动画:


//集合
//1, 创建集合对象
AnimatorSet animatorSet = new AnimatorSet();


//2, 创建每一个动画
ObjectAnimator rotationAnimator = ObjectAnimator.ofFloat(mIv,"rotation",0,360);
ObjectAnimator translationYAnimator = ObjectAnimator.ofFloat(mIv,"translationY",0,900);


//3, 把单个动画添加到集合中
//第一种方式
//                    List<Animator> list = new ArrayList<>();
//                    list.add(rotationAnimator);
//                    list.add(translationYAnimator);
//                    //animatorSet.playSequentially(list);//依次执行
//                    animatorSet.playTogether(list);//一起执行


//第二种方式  -- 注意:  同一个动画, 只能被使用一次
animatorSet.play(rotationAnimator).with(translationYAnimator);


//4, 设置持续时间
animatorSet.setDuration(5000);


//5, 启动动画
animatorSet.start();







作业:


*   1, 完成今天课堂代码  -- 补间


*   2, 利用补间动画, 自己组合一个动画, 出现比较炫的效果  -- 必须
内容概要:本文介绍了奕斯伟科技集团基于RISC-V架构开发的EAM2011芯片及其应用研究。EAM2011是一款高性能实时控制芯片,支持160MHz主频和AI算法,符合汽车电子AEC-Q100 Grade 2和ASIL-B安全标准。文章详细描述了芯片的关键特性、配套软件开发套件(SDK)和集成开发环境(IDE),以及基于该芯片的ESWINEBP3901开发板的硬件资源和接口配置。文中提供了详细的代码示例,涵盖时钟配置、GPIO控制、ADC采样、CAN通信、PWM输出及RTOS任务创建等功能实现。此外,还介绍了硬件申领流程、技术资料获取渠道及开发建议,帮助开发者高效启动基于EAM2011芯片的开发工作。 适合人群:具备嵌入式系统开发经验的研发人员,特别是对RISC-V架构感兴趣的工程师和技术爱好者。 使用场景及目标:①了解EAM2011芯片的特性和应用场景,如智能汽车、智能家居和工业控制;②掌握基于EAM2011芯片的开发板和芯片的硬件资源和接口配置;③学习如何实现基本的外设驱动,如GPIO、ADC、CAN、PWM等;④通过RTOS任务创建示例,理解多任务处理和实时系统的实现。 其他说明:开发者可以根据实际需求扩展这些基础功能。建议优先掌握《EAM2011参考手册》中的关键外设寄存器配置方法,这对底层驱动开发至关重要。同时,注意硬件申领的时效性和替代方案,确保开发工作的顺利进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值