Android初级开发第九讲--动画
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!
Android中动画的应用,在应用管理软件、购物软件、追星软件等比较广泛;比如常见的进度条设计,此处尤其指圆形的那种。比如清理小火箭,从下向上飞出;比如清理软件提示,由深色渐变成浅色。这些都是动画的应用场景。
Android动画分为两种,一种叫帧动画,就像flash一样,学名Frame,进度条一般使用这种;另一种叫补间动画,学名Tween,可以移动位置、变化颜色、变换大小、翻转变化。
先说帧动画
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"android:oneshot="false"><itemandroid:drawable="@mipmap/icon_s01"android:duration="30" /><itemandroid:drawable="@mipmap/icon_s02"android:duration="30" /><itemandroid:drawable="@mipmap/icon_s03"android:duration="30" /></animation-list>
onshot的意思是,true只播放一遍,false循环播放;item项指每隔duration展示的图片
应用:
先写布局
<ImageViewandroid:id="@+id/loading_iv"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_horizontal"android:background="@drawable/anim_progress_round"/>
再执行代码
ImageView loadingImage = child.findViewById(R.id.loading_iv);AnimationDrawable animation = (AnimationDrawable) loadingImage.getBackground();if (animation.isRunning()) {animation.stop();}animation.start();
获得背景的AnimationDrawable对象,执行start方法即可。
补间动画:
基类Animation,子类ScaleAnimation、AlphaAnimation、RotateAnimation、TranlateAnimation,分别用于大小变换、色彩变换、翻转变换和位移变换。
常用方法有setDutation-设置运行时间,setFillAfter-设置运行结束是否保持最后状态,setFillBefore-设置运行结束是否保质最初状态,setRepeatCount-设置重复执行次数;setRepeatMode-设置重复类型,如REVERSE会倒着再执行repeatCount遍;setInterpolater-设置插补器,可以让控件回弹,控制速度。
//accelerate_decelerate_interpolator先慢后快再慢linear_interpolator匀速decelerate_interpolator先快后慢mAnimationTranslate.setInterpolator(mContext, android.R.anim.decelerate_interpolator);
例:
mAnimationTranslate = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0f,Animation.RELATIVE_TO_PARENT, 1, Animation.RELATIVE_TO_SELF, 0,Animation.RELATIVE_TO_SELF, 0);mAnimationTranslate.setDuration(3000);mAnimationTranslate.setRepeatMode(Animation.ABSOLUTE);mAnimationTranslate.setRepeatCount(0);
mRocketIv.startAnimation(mAnimationTranslate);
设置相关参数,执行startAnimation即可。
ScaleAnimation:fromXScale-X轴方向缩放比例,toXScale、fromYScale和toYScale同理;pivoteX起点X坐标,pivoteY同理。
AlphaAnimation:fromAlpha-起始透明度,toAlpha-最终透明度。
RotateAnimation:fromDegress-起始角度,toDegress-最终角度,正数为顺时针,负数为逆时针。
TranslateAnimation:fromXType-起始位移类型,fromYType同理;fromXValue-起始X坐标,fromYValue同理;
从左边折出来
ScaleAnimation animation = new ScaleAnimation(0f, 1f, 1f, 1f);animation.setDuration(1000);//设置动画持续时间mChannelLayout.setAnimation(animation);
从左上角弹出来
ScaleAnimation animation = new ScaleAnimation(0f, 1f, 0f, 1f);animation.setDuration(1000);//设置动画持续时间mChannelLayout.setAnimation(animation);
从左向右的动画:
AnimationUtils.makeInAnimation(this, true);
从右回到左的动画:
AnimationUtils.makeOutAnimation(this, false);
最后AnimationSet可以对以上四种补间动画类型进行组合,制造出更加炫酷的效果。
话外:通过AnimationSet可以将上述4种动画,使用AnimatorInflater和ObjectAnimator,联合起来一起(togethor)或者顺序(sequentially)执行,做更复杂的效果。
动画修饰:
AccelerateDecelerateInterpolator 在动画开始与结束的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
Android初级开发第九讲--动画相关推荐
- Android初级开发笔记-- activity启动模式的学习(1)
第一次学习Android中一个很重要的概念,启动模式.文章记录的也只是一些入门知识,随着学习的深入还会有activity启动模式的学习(2)和(3). 下面分三个小点说一下对启动模式的理解区别以及如何 ...
- 陈力:传智播客古代 珍宝币 泡泡龙游戏开发第九讲:块元素、行内元素、标准流、盒子模型
陈力:传智播客古代 珍宝币 泡泡龙游戏开发第九讲:块元素.行内元素.标准流.盒子模型 DIV+CSS将显示和数据分离,极大的方便了贵阳网站建设时布局的灵活性.将节对DIV+CSS中类选择器.id选择器 ...
- 【安卓开发 】Android初级开发(三)动画
逐帧动画 方法一,在xml中设置 1.先将图片加入drawable 2.在drawable中新建xml,设置每一帧的图片和时间 <?xml version="1.0" enc ...
- Android应用开发之所有动画使用详解
| LinearInterpolator | @android:anim/linear_interpolator | 动画匀速改变 | | OvershootInterpolator | @andro ...
- 【android编程】第九讲-用户资源
第九讲 用户资源 文章目录 第九讲 用户资源 0.学习指导 1.字符串(string)资源 2.颜色(color)资源 颜色值定义 定义颜色资源文件 使用颜色资源 3.尺寸(dimen)资源 Andr ...
- Android游戏开发–雪碧动画
如果到目前为止您仍然关注该系列,我们将在处理触摸,显示图像和移动它们方面广为人知. 但是,动态图像看起来很呆板,因为它看起来确实是假的和业余的. 为了给角色一些生活,我们将需要做更多的事情. 这就是动 ...
- Android初级开发第七讲--特效和数据传递处理
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved ! 大家好,相信大家对iphone上的特效早有耳闻,特效不仅给人以 ...
- Android高级开发第二讲--Android中API翻译之Activity
博客出自:刘兆贤的博客_CSDN博客-Java高级,Android旅行,Android基础领域博主,转载注明出处! All Rights Reserved ! Activity主要用来展示给用户,让用 ...
- 【安卓开发 】Android初级开发(十二)Android向系统日历中添加事件
1.首先需要获取权限 <uses-permission android:name="android.permission.READ_CALENDAR" /><us ...
最新文章
- 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录
- mysql数据库优化(二)
- left join 一对多_MYSQL 连接查询算法:JOIN语句在 MYSQL 内部到底是怎么执行的
- 住手!!你不需要微服务!
- 虎年云原生落地技术趋势
- 梯度消失和梯度爆炸_知识干货-动手学深度学习-05 梯度消失和梯度爆炸以及Kaggle房价预测...
- python项目计划_2017年vn.py项目计划
- django下的考勤机管理系统定制实例
- master matlab,MOEA-master
- 【圣诞快乐】闻到圣诞的气息了,喜欢的节日在慢慢来临~祝大家Merry Christmas。
- Matlab之双坐标轴绘制plotyy
- 1211: 【入门】数字走向IV
- getPrepayId php,php微信支付接口开发程序
- 微服务架构系列一:关键技术与原理研究
- 想知道手机配音软件哪个好用吗?一起来看看吧
- iOS图像渲染 + 动画探索
- 求真值表,主析取范式,主合取范式
- 【不忘初心】Windows10 21H2 (19044.1566) X64 无更新[深度精简版][1.28G](2022.2.25)
- 口琴膜片什么作用_有多少人用无膜半音阶口琴,对于初学者来说?
- 思维导图怎么画?思维导图快速绘制教程