Android 杂谈---帧动画
Android中的动画有
- 帧动画
- 属性动画
- 补间动画
大体思路
1.需要定义存放每一帧的xml文件,放在drawable文件夹下
设置图片路径和duration,以及shot属性,false--->只播放一次,true----->播放多次
<?xml version="1.0" encoding="utf-8"?>
<animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="50" android:drawable="@drawable/progressbar34" />
<item android:duration="50" android:drawable="@drawable/progressbar33" />
<item android:duration="50" android:drawable="@drawable/progressbar32" />
<item android:duration="50" android:drawable="@drawable/progressbar31" />
<item android:duration="50" android:drawable="@drawable/progressbar30" />
<item android:duration="50" android:drawable="@drawable/progressbar29" />
<item android:duration="50" android:drawable="@drawable/progressbar28" />
<item android:duration="50" android:drawable="@drawable/progressbar27" />
<item android:duration="50" android:drawable="@drawable/progressbar26" />
<item android:duration="50" android:drawable="@drawable/progressbar25" />
<item android:duration="50" android:drawable="@drawable/progressbar24" />
<item android:duration="50" android:drawable="@drawable/progressbar23" />
<item android:duration="50" android:drawable="@drawable/progressbar22" />
<item android:duration="50" android:drawable="@drawable/progressbar21" />
<item android:duration="50" android:drawable="@drawable/progressbar20" />
<item android:duration="50" android:drawable="@drawable/progressbar19" />
<item android:duration="50" android:drawable="@drawable/progressbar18" />
<item android:duration="50" android:drawable="@drawable/progressbar17" />
<item android:duration="50" android:drawable="@drawable/progressbar16" />
<item android:duration="50" android:drawable="@drawable/progressbar15" />
<item android:duration="50" android:drawable="@drawable/progressbar14" />
<item android:duration="50" android:drawable="@drawable/progressbar13" />
<item android:duration="50" android:drawable="@drawable/progressbar12" />
<item android:duration="50" android:drawable="@drawable/progressbar11" />
<item android:duration="50" android:drawable="@drawable/progressbar10" />
<item android:duration="50" android:drawable="@drawable/progressbar9" />
<item android:duration="50" android:drawable="@drawable/progressbar8" />
<item android:duration="50" android:drawable="@drawable/progressbar7" />
<item android:duration="50" android:drawable="@drawable/progressbar6" />
<item android:duration="50" android:drawable="@drawable/progressbar5" />
<item android:duration="50" android:drawable="@drawable/progressbar4" />
<item android:duration="50" android:drawable="@drawable/progressbar3" />
<item android:duration="50" android:drawable="@drawable/progressbar2" />
<item android:duration="50" android:drawable="@drawable/progressbar1" />
</animation-list>
progress.xml
2.指定存放该动画的容器,使用imageView来充当
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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"
tools:context="com.jing.www.loginlightdemo.MainActivity">
<ImageView
android:id="@+id/animation_iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_margin="10dp"
android:src="@drawable/progress" /> </android.support.constraint.ConstraintLayout>
activity_main.xml
3.使用代码来播放帧动画
注意:不能再onCreate()方法中进行动画的播放,动画依附于window,在onCreate()时期,window还没有初始化完成
会使动画没有运行而是停留在第一帧,那是因为AnimationDrawable播放动画是依附在window上面,而在Activity onCreate方法中调用时Window还未初始化完毕,所有才会停留在第一帧,要想实现播放必须在onWindowFocusChanged中添加如下代码:
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.animation_iv);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
imageView.setImageResource(R.drawable.progress);
AnimationDrawable animationDrawable = (AnimationDrawable) imageView.getDrawable();
animationDrawable.start();
}
}
MainActivity.java
Android 杂谈---帧动画的更多相关文章
- Android 自定义帧动画
Android 自定义帧动画 Android L : Android Studio 帧动画 和gif图片类似,顺序播放准本好的图片文件:图片资源在xml文件中配置好 将图片按照预定的顺序一张张切换,即 ...
- Android使用帧动画内存溢出解决方法
Android使用帧动画内存溢出解决方法https://blog.csdn.net/daitu_liang/article/details/52336015https://blog.csdn.net/ ...
- Android 逐帧动画
原理: 逐帧动画是最简单的一种动画.原理就是把几张图片连续显示出来,以达到动画的效果.就相当于下面这种手绘翻页动画啦~ 实现: 1.需要建立一个animation-list来设置静态图片资源.持续时间 ...
- Android实现帧动画,以及出场时的动画
最近有个小需求,在数据上传的时候加一个上传的动画,然后就寻思着自己写一个帧动画 上传开始的时候调用动画,上传结束通知容器将其删除(这个方法应该不会太耗内存),然后吐槽下gif图片还是我自己一帧一帧从p ...
- android 通过帧动画方式播放Gif动画
注意:经过本人测试,这个方法很耗内存, 图片一多就崩了.慎用 <1>用工具(photoshop或者FireWorks)将GIF动画图片分解成多个GIF静态图片,然后保存在res\drawa ...
- Android 逐帧动画isRunning 一直返回true的问题
AnimationDrawabl主要通过xml实现逐帧动画,SDK实例如下: An AnimationDrawable defined in XML consists of a single < ...
- Android中帧动画的创建
帧动画,实质上就是快速播放多张连接效果的图片,现在一般可用于下拉刷新时候的headView 实现步骤: 1.首先应该准备一组连接效果的图片 2.在res>drawable目录下创建xml文件,将 ...
- Android 逐帧动画( Drawable 动画),这一篇就够了
前言 作为 Android 最常见的两种动画形式,逐帧动画( Drawable 动画),有着极其广泛的应用,它的原理与早起的电影以及 GIF 类似,就是把一张的图,按顺序快速切换,这样一来看上去就好像 ...
- Android之帧动画
MySurfaceView类: package com.fm; import android.content.Context; import android.graphics.Bitmap; impo ...
随机推荐
- Word写博常用博客URL地址
地址 描述 http://imguowei.blog.51cto.com/xmlrpc.php 51cto http://upload.move.blog.sina.com.cn/blog_rebui ...
- IO多路复用和local概念
一.local 在多个线程之间使用threading.local对象,可以实现多个线程之间的数据隔离 import time import random from threading import T ...
- 存储引擎和表的操作(mysql中的数据类型、完整性约束)
一.存储引擎 .概念 MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平并且最终提供广泛的不同的功能和能力. 通过选择不同的技术 ...
- DRF之版本控制、认证和权限组件
一.版本控制组件 1.为什么要使用版本控制 首先我们开发项目是有多个版本的当我们项目越来越更新,版本就越来越多,我们不可能新的版本出了,以前旧的版本就不进行维护了像bootstrap有2.3.4版本的 ...
- error:Microsoft Visual C++ 14.0 is required.
1,下载14.0安装包,解压,再次执行pip install XX命令 2,安装包已经在下载文件中 3,最不行找这个网站 https://www.microsoft.com/zh-cn/downloa ...
- Spring security oauth2 client_credentials认证 最简单示例代码
基于spring-boot-2.0.0 1,在pom.xml中添加: <!-- security --> <!-- https://mvnrepository.com/artifac ...
- 从零开始部署javaWeb项目到阿里云上面
[详情请看]http://www.cnblogs.com/softidea/p/5271746.html 补充几点特别需要注意的事情 一:putty相当于阿里云的控制台, WinSCP 相当于是专门上 ...
- Spark Standalone spark-default.conf
Example: spark.master spark://master:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://name ...
- Linux性能优化实战:系统的swap变高(08)
一.Swap 原理 前面提到,Swap 说白了就是把一块磁盘空间或者一个本地文件(以下讲解以磁盘为例),当成内存来使用.它包括换出和换入两个过程 1.所谓换出 就是把进程暂时不用的内存数据存储到磁盘中 ...
- kubernetes云平台管理实战: 滚动升级秒级回滚(六)
一.nginx保证有两个版本 1.查看当前容器运行nginx版本 [root@k8s-master ~]# kubectl get pod -o wide NAME READY STATUS REST ...