文档章节

安卓开发笔记(十七):帧动画制作与开发

o
 osc_w9s1w4o0
发布于 2019/03/30 20:43
字数 819
阅读 7
收藏 0

精选30+云产品,助力企业轻松上云!>>>

Android动画主要分为3种
  • View动画
  • 帧动画
  • 属性动画
何为帧动画?

帧动画最简单,通过顺序播放一系列的图像产生动画,就和动画片的原理是一样的。做好的结果可以是这样:

也可以是这样的动态图:

如果无法播放动态图的话,可能是您的浏览器需要升级一下了。我们为了创建一个好的帧动画,首先应该创建一个xml文件,用于图片的轮播,但是这个xml文件有点特殊,因为她必须创建在我们的drawble文件夹下,而且其xml必须以<animation-list>来做开头与结尾。

对于很多童鞋而言,创建这个xml文件的方式之前大家可能都没有接触过,这里先普及一下如何创建这个文件:


第一步

先将目录栏的模式切换成android 模式

然后右击你需要创建xml 对应的module

选择new, 然后 找到Android resource file

将Resource type 选成Drawable

将Root element 选成 animation-list,然后点击OK 即可

这样我们的animaition-list的xml文件就创建好了。

再在这个文件里写上我们的代码,用于引入我们的图片:

 

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/i1" android:duration="20"></item>
    <item android:drawable="@drawable/i2" android:duration="20"></item>


    <item android:drawable="@drawable/i3" android:duration="20"/>
    <item android:drawable="@drawable/i4" android:duration="20"/>
    <item android:drawable="@drawable/i5" android:duration="20"/>
    <item android:drawable="@drawable/i6" android:duration="20"/>

    <item android:drawable="@drawable/i7" android:duration="20"/>
    <item android:drawable="@drawable/i8" android:duration="20"/>
    <item android:drawable="@drawable/i9" android:duration="20"/>
    <item android:drawable="@drawable/i10" android:duration="20"/>
    <item android:drawable="@drawable/i11" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20"/>
    <item android:drawable="@drawable/i12" android:duration="20">


    </item>
</animation-list>

 

后面的duration作为一帧图片的播放时间,前面则是引入图片的地址,一般放到drawble文件夹里,对图片的名称没有顺序的限制,图片轮播的顺序主要是根据上面这段代码的顺序来制定的。

第二步.编写activity_main.xml

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="match_parent"
        android:layout_height="237dp"
        android:layout_alignParentStart="true"
        android:layout_centerVertical="true"
        android:background="@drawable/anima" />

</RelativeLayout>

 

一般来说,里面的imageview用来承接刚刚的animation-list的布局以及图片,最后我们在我们的java代码里引入这个imageview就可以了。

第三步.编写Java代码

主活动来播放动画,这里设置点击背景时触发动画,代码很简单,之后我们再看直接不需要点击就播放的代码:

public class MainActivity extends Activity
{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = (ImageView) findViewById(R.id.imageView1);

        final AnimationDrawable background = (AnimationDrawable) imageView
                .getBackground();
        imageView.setOnClickListener(new OnClickListener()
        {

            public void onClick(View v)
            {
                background.start();
            }
        });
    }

}

无需点击,直接播放的代码如下:

public class MainActivity extends Activity
{

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = (ImageView) findViewById(R.id.imageView1);

        final AnimationDrawable background = (AnimationDrawable) imageView
                .getBackground();
      

                background.start();
       

}

这样再运行我们的文件,可以看到动画已经播放出来啦!!

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

【软件工具篇02】使用Anki克服遗忘曲线

使用Anki克服遗忘曲线 艾宾浩斯遗忘曲线 百度百科:遗忘曲线由德国心理学家艾宾浩斯研究发现,描述了人类大脑对新事物遗忘的规律。人体大脑对新事物遗忘的循序渐进的直观描述,人们可以从遗...

osc_wobxrheh
8分钟前
0
0
面向对象的理解

面向对象的三大特性 封装 继承 多态 面向对象的七大原则 单一职责原则:每一个类应该专注于做一件事情。即高内聚,低耦合。类的功能要单一,体积不要过于庞大。 开闭原则:一个对象对扩展开发...

osc_2wq8ft8d
10分钟前
0
0
Laravel Redis分布式锁实现源码分析

首先是锁的抽象类,定义了继承的类必须实现加锁、释放锁、返回锁拥有者的方法。 namespace Illuminate\Cache;abstract class Lock implements LockContract{ use InteractsWithTime;...

osc_2jegjdnw
12分钟前
0
0
【HDFS篇03】HDFS客户端操作 --- 开发环境准备

存储越困难,提取越容易 HDFS客户端操作---开发环境准备 步骤一:编译对应HadoopJar包,配置Hadoop变量 步骤二:创建Maven工程,导入pom依赖 <dependencies><dependency><groupId>ju...

osc_ds5ni1ur
13分钟前
0
0
老板,来瓶辣椒酱

最近网剧《隐秘的角落》非常的火爆,结局反转让人难以预料,但前两天发生了一场堪比史诗级大片的纠纷,纠纷的结局反转让人大跌眼镜,估计是神编剧都写不出来那样的剧本...而引发这场纠纷最核...

osc_1loi8uc4
14分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部