android 用frame动画做幻灯片,Android自定义view教程01-------------Android的Frame动画详解...

本文介绍了如何在Android中创建和使用帧动画,包括在res/anim目录下创建动画资源文件,设置帧间隔时间和播放次数。同时,展示了通过代码动态加载和播放帧动画的方法,适用于实现动态加载的loading图效果。文章还讨论了为何在某些情况下,使用帧动画代替gif图片可能更为高效。
摘要由CSDN通过智能技术生成

本系列博文 最终的目的是能教会大家自己实现比较复杂的android 自定义控件。所以知识点不仅仅局促在自定义view本身上面。实际上现在github上一些做的比较出色的自定义控件 大部分都是由三个部分组成

第一:动画 第二:自定义view 第三:触摸滑动控制。所以我们这个系列也是由动画作为开篇。最终会带着大家分析几个github上比较出色的自定义控件。

Android 的frame动画是比较简单基础的内容,在以往的2.x 3.x版本很多人都会去使用这个 来作为loading 图的实现方法。但是最近实际上在做loading图效果的时候很多人已经不去使用frame了。

原因是有更简单的方法----直接播放一个gif图片更好。更方便。但是在以往10-12年这个时间段 android的机器硬件还比较一般的时候 还是避免这么做的,因为直接播放gif 图片比较消耗cpu和内存。

而用frame动画来做 效果会更好一些。废话不多说,简单介绍两种方法来实现frame动画。

首先在res下面新建一个文件夹 anim,然后在这个文件夹里面新建一个动画文件(这个文件不要放在drawable下面,有些android 版本会在这里报错 一定要放在anim下)。例如

android:oneshot="true" >

android:drawable="@drawable/aaa"

android:duration="1000"/>

android:drawable="@drawable/bbb"

android:duration="1000"/>

android:drawable="@drawable/ccc"

android:duration="1000"/>

android:drawable="@drawable/ddd"

android:duration="1000"/>

android:drawable="@drawable/eee"

android:duration="1000"/>

这就是我们要播放的动画内容  android:oneshot 这个属性是指是不是播放一次就结束 true 就是一次就结束 false就是一直播放下去  android:duration="1000" 是指每隔一千毫秒就换下一张图片。

然后在mainActivity的 xml里面引用这个文件即可

1

2 xmlns:tools="外链网址已屏蔽"

3 android:layout_width="match_parent"

4 android:layout_height="match_parent"

5 android:orientation="vertical" >

6

7

9 android:layout_width="wrap_content"

10 android:layout_height="wrap_content"

11 android:background="@anim/dance" />

12

13

之后即可看到效果,当然有的人想做的炫酷一点,比如说资源文件是从网上拉取的, 要做成动态加载动画,那么也是可以的,通过代码来控制即可

1 packagecom.example.frametest;2

3 importandroid.app.Activity;4 importandroid.graphics.drawable.AnimationDrawable;5 importandroid.graphics.drawable.Drawable;6 importandroid.os.Bundle;7 importandroid.widget.ImageView;8

9 public class MainActivity extendsActivity {10

11 privateImageView iv;12

13 private AnimationDrawable animDr = newAnimationDrawable();14

15 @Override16 protected voidonCreate(Bundle savedInstanceState) {17 super.onCreate(savedInstanceState);18 setContentView(R.layout.activity_main);19 this.iv = (ImageView) this.findViewById(R.id.im);20 //这边图省事就直接加载drawable文件夹下面的图片 如果有需要你们可以直接加载sd卡下的图片

21 Drawable drawable =getResources().getDrawable(R.drawable.aaa);22 animDr.addFrame(drawable, 1000);23 Drawable drawable2 =getResources().getDrawable(R.drawable.bbb);24 animDr.addFrame(drawable2, 1000);25 Drawable drawable3 =getResources().getDrawable(c);26 animDr.addFrame(drawable3, 1000);27 Drawable drawable4 =getResources().getDrawable(R.drawable.ddd);28 animDr.addFrame(drawable4, 1000);29

30 animDr.setOneShot(false);31 iv.setBackgroundDrawable(animDr);32 animDr.start();33

34 }35 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值