Android动画-帧动画

简介:

Android 平台提供了两种动画一种是 Frame动画,即顺序的播放事先做好的图像,与gif图片或者说跟放电影的原理相似,另一种是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变),本文中是是介绍第一种帧动画的的实现,帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。 因为逐帧动画的帧序列内容不一样,不但给制作增加了负担而且最终输出的文件量也很大,但它的优势也很明显:逐帧动画具有非常大的灵活性,几乎可以表现任何想表现的内容,而它类似与电影的播放模式,很适合于表演细腻的动画。

布局文件

首先在res中新建一个drawable文件夹,将需要展示的图片放在里面,同样的还有展示图片的fight.xml文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?xml version= "1.0"  encoding= "utf-8" ?>
<animation-list xmlns:android= "http://schemas.android.com/apk/res/android"
     android:oneshot= "false"  >
 
     <item
         android:drawable= "@drawable/fight_1"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_2"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_3"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_4"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_5"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_6"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_7"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_8"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_9"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_10"
         android:duration= "200" />
     <item
         android:drawable= "@drawable/fight_11"
         android:duration= "200" />
 
</animation-list>

 文件夹的布局:

 

Demo实现

MainActivity定义一个ImageView,oncreate中调用:

1
2
3
ImageView fightImage = (ImageView) findViewById(R.id.image_aniation);
      fightImage.setBackgroundResource(R.drawable.fight);
      fightnimation = (AnimationDrawable) fightImage.getBackground();

不能加载的时候立即调用,需要在触摸的时候调用:

1
2
3
4
5
6
7
public  boolean  onTouchEvent(MotionEvent event) {
      if  (event.getAction() == MotionEvent.ACTION_DOWN) {
          fightnimation.start();
        return  true ;
      }
      return  super .onTouchEvent(event);
    }

 效果如下:

本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/4101548.html,如需转载请自行联系原作者

相关文章
|
5月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
106 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Android开发 UED
Android 中加载 Gif 动画
【10月更文挑战第20天】加载 Gif 动画是 Android 开发中的一项重要技能。通过使用第三方库或自定义实现,可以方便地在应用中展示生动的 Gif 动画。在实际应用中,需要根据具体情况进行合理选择和优化,以确保用户体验和性能的平衡。可以通过不断的实践和探索,进一步掌握在 Android 中加载 Gif 动画的技巧和方法,为开发高质量的 Android 应用提供支持。
|
8月前
|
Java Android开发 开发者
Android10 修改开发者选项中动画缩放默认值
Android10 修改开发者选项中动画缩放默认值
230 0
|
8月前
|
XML Java Android开发
android的三种动画
android的三种动画
51 0
|
6月前
|
XML Android开发 数据格式
Android 中如何设置activity的启动动画,让它像dialog一样从底部往上出来
在 Android 中实现 Activity 的对话框式过渡动画:从底部滑入与从顶部滑出。需定义两个 XML 动画文件 `activity_slide_in.xml` 和 `activity_slide_out.xml`,分别控制 Activity 的进入与退出动画。使用 `overridePendingTransition` 方法在启动 (`startActivity`) 或结束 (`finish`) Activity 时应用这些动画。为了使前 Activity 保持静止,可定义 `no_animation.xml` 并在启动新 Activity 时仅设置新 Activity 的进入动画。
183 12
|
7月前
|
Android开发 UED
Android Item平移动画
【6月更文挑战第18天】
126 8
|
6月前
|
XML Android开发 UED
Android动画之共享元素动画简单实践
本文介绍Android共享元素动画, 实现两Activity间平滑过渡特定UI元素。通过设置`transitionName`属性和使用`ActivityOptions.makeSceneTransitionAnimation`启动目标Activity实现动画效果。可自定义过渡动画提升体验。
94 0
|
6月前
|
Android开发
android 动画 插值器和估值器
android 动画 插值器和估值器
|
8月前
|
数据库 Android开发
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画
Android数据库框架-GreenDao入门,2024年最新flutter 页面跳转动画