1.苦逼的需求又来了,须要实现一些动画效果,第一个想到的是播放gif图片,可是这样会占包的资源,而且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享一下

2.效果图例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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帧动画,移动位置,缩放,改变透明度等动画解说的更多相关文章

  1. android帧动画,移动位置,缩放,改变透明度等动画讲解

    1.苦逼的需求又来了,需要实现一些动画效果,第一个想到的是播放gif图片,但是这样会占包的资源,并且清晰度不高,于是想着程序实现,自己用帧动画+缩放+移动+透明度 实现了一些想要的效果,这里跟大家分享 ...

  2. Android 旋转、平移、缩放和透明度渐变的补间动画

    补间动画就是通过对场景里的对象不断进行图像变化来产生动画效果.在实现补间动画时,只需要定义开始和结束的“关键帧”,其他过渡帧由系统自动计算并补齐.在Android中,提供了以下4种补间动画. **1. ...

  3. iOS基本动画/关键帧动画/利用缓动函数实现物理动画效果

    先说下基本动画部分 基本动画部分比较简单, 但能实现的动画效果也很局限 使用方法大致为: #1. 创建原始UI或者画面 #2. 创建CABasicAnimation实例, 并设置keypart/dur ...

  4. android 帧动画,补间动画,属性动画的简单总结

      帧动画——FrameAnimation 将一系列图片有序播放,形成动画的效果.其本质是一个Drawable,是一系列图片的集合,本身可以当做一个图片一样使用 在Drawable文件夹下,创建ani ...

  5. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变). 第二类就是 Frame动画,即顺序的播放事先做好的图像,与g ...

  6. 【转】android动画之Tween动画 (渐变、缩放、位移、旋转)

    原文:http://blog.csdn.net/feng88724/article/details/6318430 Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的 ...

  7. [android] 帧动画和补间动画

    逐帧显示一张图片,连起来成为动画 在res/drawable/目录下,创建一个xxx.xml的文件 添加<animation-list>节点,设置是否循环android:oneshot:” ...

  8. Android学习笔记_55_Tween动画 (渐变、缩放、位移、旋转)

    Android 平台提供了两类动画. 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转.平移.放缩和渐变).第二类就是 Frame动画,即顺序的播放事先做好的图像,与gi ...

  9. android 帧动画的实现及图片过多时OOM解决方案(一)

    一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...

随机推荐

  1. redis动态添加内存,动态配置,无需重启

    在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存.如果有无用的内容可删除那么所有问题都已经解决.如果内容都 ...

  2. 用fiddler不能抓取https及证书无法导出

    本次说的不是首次安装fiddler 1.不管有没有安装成功,先查看有没有安装过证书,有的话删除,重新进行安装 打开fiddler,找到Tools-HTTPS-Athons-Open windows C ...

  3. shp系列(三)——利用C++进行DBF文件的读(打开)

    1.DBF文件要点 DBF文件又叫属性文件,也叫dBASE文件,文件后缀是.dbf,实际上ArcGIS打开后的属性表就是DBF的信息.DBF文件遵循以下几个条件: 每个要素在表中必须要包含一个与之相对 ...

  4. golang互斥锁和读写锁

    一.互斥锁 互斥锁是传统的并发程序对共享资源进行访问控制的主要手段.它由标准库代码包sync中的Mutex结构体类型代表.sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开 ...

  5. POJ 2492 A Bug's Life 带权并查集

    题意: 思路: mod2 意义下的带权并查集 如果两只虫子是异性恋,它们的距离应该是1. 如果两只虫子相恋且距离为零,则它们是同性恋. (出题人好猥琐啊) 注意: 不能输入一半就break出来.... ...

  6. [Luogu1273] 有线电视网

    [Luogu1273] 有线电视网 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树的根结点位于足球比赛的现场,树叶为各个用户终端,其他中转站为该树 ...

  7. 实现model中的文件上传FTP(一)

    由于在django的model中配置了filefield或者imagefield配置了upload_to参数只能将用户上传的文件上传到项目本地,就算重定向到项目外也只是直接读取文件系统,这样对未来的项 ...

  8. RocketMQ之基本信息

    1.Producer 即消息生产者,负责产生消息,一般由业务系统负责产生消息. 2.Consumer 即消息消费者,负责消费消息,一般是后台系统负责异步消费. 3.Push Consumer Cons ...

  9. [原创]Eclipse 安卓开发几个异常的处理办法

    一.代码没有问题,就是报错,重启一下就会好.可以先clean再build; 二.R.Java丢失 网上讲了若干方法,有用android toos的,有clean再build的,我的解决办法是勾选bui ...

  10. hdu2819 Swap 最大匹配(难题)

    题目大意: 给定一个元素的值只有1或者0的矩阵,每次可以交换两行(列),问有没有方案使得对角线上的值都是1.题目没有限制需要交换多少次,也没限制行交换或者列交换,也没限制是主对角线还是副对角线.虽然没 ...