android帧动画,移动位置,缩放,改变透明度等动画讲解
1.苦逼的需求又来了,需要实现一些动画效果,第一个想到的是播放gif图片,但是这样会占包的资源,并且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享一下
2.效果图如下:
3.帧动画实现代码
1).首先获取每帧显示的ImageView控件,然后把所有帧放到AnimationDrawable对象里面去,开启动画,通过handle延时2秒关闭动画
ImageView ivFrame = (ImageView) findViewById(R.id.iv_frame);
// 通过逐帧动画的资源文件获得AnimationDrawable示例
final AnimationDrawable frameAnim = (AnimationDrawable) getResources().getDrawable(R.drawable.thank_you_boss_anim);
ivFrame.setBackgroundDrawable(frameAnim);// 把AnimationDrawable设置为ImageView的背景
frameAnim.start(); new Handler().postDelayed(new Runnable() {
@Override
public void run(){
if (frameAnim != null && frameAnim.isRunning()) {//2秒之后结束动画
frameAnim.stop();
}
}
},2000);
2).thank_you_boss_anim.xml 所有帧的布局文件 设置每一帧的图片,每帧时间
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" >
<!-- 定义一个动画帧,Drawable为img0,持续时间300毫秒 -->
<item android:drawable="@drawable/icon_think_boss_one" android:duration="100"/>
<item android:drawable="@drawable/icon_think_boss_two" android:duration="100"/>
<item android:drawable="@drawable/icon_think_boss_three" android:duration="100"/>
<item android:drawable="@drawable/icon_think_boss_four" android:duration="300"/>
</animation-list>
4.帧动画加上移动 放大 透明度效果
开启一个dialog,背景设置透明,得到帧动画跟文字图片显示ImageView,然后开启两个动画。
/**
* 谢谢土豪打赏
*/
private void thankTuhaoReward(){
View view=LayoutInflater.from(this).inflate(R.layout.activity_thank_tuhao_reward,null);
final Dialog tyrantDialog = new Dialog(this,R.style.selectorDialog); tyrantDialog.findViewById(R.id.iv_frame); tyrantDialog.setContentView(view);
tyrantDialog.setCanceledOnTouchOutside(true); ImageView ivFrame=(ImageView) tyrantDialog.findViewById(R.id.iv_frame); // 通过逐帧动画的资源文件获得AnimationDrawable示例
final AnimationDrawable frameAnim=(AnimationDrawable) getResources().getDrawable(R.drawable.thank_you_tyrant_anim);
ivFrame.setBackgroundDrawable(frameAnim);//把AnimationDrawable设置为ImageView的背景
frameAnim.start(); ImageView playThinkOneText=(ImageView) tyrantDialog.findViewById(R.id.play_think_one_text);
Animation anim = AnimationUtils.loadAnimation(this,R.anim.translate_thank_you_tyrant);
playThinkOneText.startAnimation(anim);
anim.setFillAfter(true);
tyrantDialog.show(); view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
stop(frameAnim);
tyrantDialog.cancel();
}
}); anim.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation){
stop(frameAnim);
tyrantDialog.cancel();
}
});
} /**
* 停止播放
*/
protected void stop(AnimationDrawable frameAnim) {
if (frameAnim != null && frameAnim.isRunning()) {
frameAnim.stop();
}
}
帧动画的布局文件我就不贴出来了,贴一下移动,缩放,改变透明度的布局文件 translate_thank_you_tyrant.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" > <translate
android:duration="1000"
android:fromXDelta="30"
android:fromYDelta="30"
android:toXDelta="30"
android:toYDelta="-120" /> <alpha
android:duration="2000"
android:fromAlpha="0.4"
android:toAlpha="1.0" /> <scale
android:duration="2000"
android:fillAfter="false"
android:fromXScale="0.4"
android:fromYScale="0.4"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" />
<!--
translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置 fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物 长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
--> </set>
android帧动画,移动位置,缩放,改变透明度等动画讲解的更多相关文章
- android帧动画,移动位置,缩放,改变透明度等动画解说
1.苦逼的需求又来了,须要实现一些动画效果,第一个想到的是播放gif图片,可是这样会占包的资源,而且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...
- Android 旋转、平移、缩放和透明度渐变的补间动画
补间动画就是通过对场景里的对象不断进行图像变化来产生动画效果.在实现补间动画时,只需要定义开始和结束的“关键帧”,其他过渡帧由系统自动计算并补齐.在Android中,提供了以下4种补间动画. **1. ...
- iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果
先说下基本动画部分 基本动画部分比较简单, 但能实现的动画效果也很局限 使用方法大致为: #1. 创建原始UI或者画面 #2. 创建CABasicAnimation实例, 并设置keypart/dur ...
- android 帧动画,补间动画,属性动画的简单总结
帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...
- 【转】android动画之Tween动画 (渐变、缩放、位移、旋转)
原文:http://blog.csdn.net/feng88724/article/details/6318430 Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的 ...
- [android] 帧动画和补间动画
逐帧显示一张图片,连起来成为动画 在res/drawable/目录下,创建一个xxx.xml的文件 添加<animation-list>节点,设置是否循环android:oneshot:” ...
- Android学习笔记_55_Tween动画 (渐变、缩放、位移、旋转)
Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变).第二类就是 Frame动画,即顺序的播放事先做好的图像,与gi ...
- android 帧动画的实现及图片过多时OOM解决方案(一)
一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...
随机推荐
- PHP常见的低级错误
写代码的时候,最讨厌的莫过于因为粗心而范的低级错误了,下面这些,你们是不是也经常犯呢? 1.标点符号缺失,诸如:“$”(美元符),“,”(逗号),“;”(分号),"->"(单 ...
- STM32之待机唤醒
前段时间我稍微涉及节能减排大赛..倡导节能的社会..没错了.你真是太聪明了..知道了我今天要讲关于STM32节能方面的模块..没错..这标题已经告诉你了是吧..哦,对,标题有写..所以..言归正传.至 ...
- (转)小小科学家的归来 by 王珢
小小科学家的归来 by 王垠很多人来信关心我的现状,所以在写别的技术性文章之前,先说说我现在的情况吧.虽然自己追求的东西和经历都比较不同寻常,但是也许可以给奋斗中的人们一些慰藉和鼓励. 首先是超级好消 ...
- linux 进程通信 管道
1. 管道概述及相关API应用 1.1 管道相关的关键概念 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动:需要双方通信时,需要建立起两个管 ...
- Linux 下安装中文 ctex 指南
大家在用 $\LaTeX$ 进行中文排版时相信会遇到不少问题,而$\textbf{ctex}$套装的出现则有效的解决了这一问题,只要安装了$\textbf{ctex}$那么在文中不用进行引用设置就可以 ...
- HDU 2202 计算几何
最大三角形 Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- Linux堆内存管理深入分析(下)
Linux堆内存管理深入分析 (下半部) 作者@走位,阿里聚安全 0 前言回顾 在上一篇文章中(链接见文章底部),详细介绍了堆内存管理中涉及到的基本概念以及相互关系,同时也着重介绍了堆中chunk分 ...
- Kotlin笔记
官网: http://kotlinlang.org/ http://kotlinlang.org/docs/reference/ 中文教程: http://kotlindoc.com/ Gradle: ...
- 探索c#之尾递归编译器优化
阅读目录: 递归运用 尾递归优化 编译器优化 递归运用 一个函数直接或间接的调用自身,这个函数即可叫做递归函数. 递归主要功能是把问题转换成较小规模的子问题,以子问题的解去逐渐逼近最终结果. 递归最重 ...
- c#实现redis客户端(一)
最近项目使用中要改造redis客户端,看了下文档,总结分享一下. 阅读目录: 协议规范 基础通信 状态命令 set.get命令 管道.事务 总结 协议规范 redis允许客户端以TCP方式连接,默认6 ...