首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在安卓上通过AnimationDrawable获取当前动画帧

在安卓上,可以通过AnimationDrawable来获取当前动画帧。

AnimationDrawable是Android中的一个类,用于实现帧动画效果。它可以将一系列的Drawable对象按照一定的时间间隔依次播放,从而形成动画效果。

要获取当前动画帧,可以使用AnimationDrawable的getCurrent方法。该方法返回当前正在播放的Drawable对象,即当前动画帧。可以通过该Drawable对象进行进一步的操作,例如获取其宽高、设置到ImageView中显示等。

以下是一个示例代码,演示如何通过AnimationDrawable获取当前动画帧:

代码语言:txt
复制
// 创建AnimationDrawable对象
AnimationDrawable animationDrawable = new AnimationDrawable();
// 添加一系列的Drawable对象作为动画帧
animationDrawable.addFrame(getResources().getDrawable(R.drawable.frame1), 100);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.frame2), 100);
animationDrawable.addFrame(getResources().getDrawable(R.drawable.frame3), 100);
// 设置动画循环播放
animationDrawable.setOneShot(false);

// 将AnimationDrawable设置到ImageView中显示
ImageView imageView = findViewById(R.id.imageView);
imageView.setImageDrawable(animationDrawable);

// 启动动画
animationDrawable.start();

// 获取当前动画帧
Drawable currentFrame = animationDrawable.getCurrent();
// 进一步操作,例如获取宽高
int width = currentFrame.getIntrinsicWidth();
int height = currentFrame.getIntrinsicHeight();

在上述代码中,我们首先创建了一个AnimationDrawable对象,并通过addFrame方法添加了一系列的Drawable对象作为动画帧。然后,将AnimationDrawable设置到ImageView中,并启动动画。最后,通过getCurrent方法获取当前动画帧的Drawable对象,并进行进一步的操作。

AnimationDrawable在安卓开发中常用于实现简单的帧动画效果,例如加载动画、按钮点击效果等。它可以通过设置不同的Drawable对象和时间间隔,创建出各种不同的动画效果。

腾讯云相关产品中,与动画相关的服务包括云点播(https://cloud.tencent.com/product/vod)和移动直播(https://cloud.tencent.com/product/mlvb)。云点播提供了丰富的视频处理功能,可以用于上传、存储和播放动画资源。移动直播则提供了实时的音视频直播服务,可以用于实现动画的实时播放和分享。

注意:本答案中没有提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,如需了解相关产品和服务,建议访问官方网站进行详细了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

实战-如何获取iOS的微信聊天记录、通过Metasploit控制

在这篇文章中我们将讨论如何获取、苹果设备中的微信聊天记录,并演示如何利用后门通过Metasploit对设备进行控制。...” 0×00 条件: 设备已获取root权限,安装SSHDroid(通过ssh、ftp连接手机) Apple设备越狱,安装OpenSSH插件 0×01 : 很多手机的用户都会遇到这么一个尴尬的问题...设备root以后可以对系统文件存在最高级别的操作权限。比如,你设备安装了微信,那么root以后通过adb shell你能对微信App的文件配置进行读取修改等操作。...iOS中,应用文件夹以hash值命名,要导出微信、QQ的聊天记录其难度相对来说稍微复杂很多。 实际操作中我们可以通过巧用Linux命令(find、grep、xargs)来绕过这些坑。...(Bytecodeviewer) 0×06 预防&安全建议 :从可信来源下载应用程序,避免感染恶意程序;移动充电桩充电前及时关闭USB调试。

4.9K90

Android实现语音播放与录音功能

项目用到的技术点和亮点 语音录音 (单个和列表) 语音播放(单个和列表) 语音录音封装 语音播放器封装 语音列表顺序播放 语音列表单个播放 复用问题处理 因为安装原生录音不能录mp3格式文件 而mp3格式是和...Auto-generated method stub return UUID.randomUUID().toString() + ".mp3"; // 音频文件格式 } /** * 获得音量等级——通过...=null) { mMediaPlayer.reset(); isPause = false; } } /** * 判断是否播放视频 * @return */ public synchronized...; MediaManager.stop(); } }); } } //核心方法 //点击了某一个条目 这个条目isSelect=true 上一个条目isSelect需要改为false 防止滑动过程中 动画复用问题...*/ private void setVoiceAnimation(ImageView iv_voice, FendaListInfo.ObjsEntity obj) { //处理动画复用问题 AnimationDrawable

2.7K50

2014-10-31Android学习------序列动画,开始,结束监听的解决--------GIF动画实现

它是先从文件中把图片加载到动画这个类,然后再有这个类放在视图上,就想上篇文章,我们定义一个Movie类一样,不过这里是 AnimationDrawable, 首先我们来看看官方API是怎么样介绍的:...我们只看类概述: 该对象是用来创建序列动画的(一接一动画),这些系列动画通过一系列可以绘制的对象来定义的, 而这些可以绘制的对象能够被作为一个View对象的背景。...然后,调用函数run()去启动动画 一个AnimationDrawable(可绘制动画) 是XML中定义的,它通常是这样定义的(由下面的这些组成):xml文件中 根节点是来定义的,...android:duration :动画的时间长度,以毫秒为单位,来显示该, 它是定义item中的 3.

1.3K30

Android开发笔记(十七)GIF动画的实现GifAnimation

GIFWindows是常见的图片格式,主要用来播放短小的动画。...对于这种情况,Android带来了动画技术,通过连续播放每图片,从而实现动画的效果。不过若要使用动画,我们得自己准备好若干,然后把这些图片编入图片队列,这样才可以显示动画。...对于如何从gif文件中提取出每图片,博主之前的文章中有做了说明,详见《Android开发笔记(十)常用的图片加工操作》。 可是手工分解gif文件也太麻烦了,如果gif数量多的话,岂不累坏了。...能否通过代码直接从gif文件中提取每图片呢?答案是有的,已经有大牛研究出来了,那么我们直接把相关算法拿过来,改改就可以用了。...Animation类,而是通过AnimationDrawable来实现(又是Drawable)。

1.1K60

AnimationDrawable 实现正在加载的旋转动画

,首先我们需要去了解他的原理,我这里面使用的是:AnimationDrawable  原理: Drawable animation可以加载Drawable资源实现动画。...AnimationDrawable是实现Drawable animations的基本类。 推荐用XML文件的方法实现Drawable动画,不推荐代码中实现。...XML文件的指令(即属性)为动画播放的顺序和时间间隔。  XML文件中元素为根节点,节点定义了每一,表示一个drawable资源的间隔。...方式2:通过View. setBackgroundResource(resID).    animation.start()....因为AnimationDrawable并未完全关联到Window, onCreate()方法中,View并未完成显示(同理,在此方法中测量某个View的宽高,常得到0值。

2K80

Android动画绘制原理(源码解析)

动画的介绍 Drawable Animation 也就是所谓的动画,Frame动画。指通过指定每一的图片和播放时间,有序的进行播放而形成动画效果。...属性动画可以操作的属性相比于补间动画大大增加,除了常用的平移、旋转、缩放、透明度还有颜色等,基本通过View.setXX来设置的属性,属性动画都可以操作,这大大增加了我们使用动画时的灵活性。...内存泄漏的问题 属性动画中有一类无限循环的动画,这类动画需要在Activity退出时及时停止,否则导致Activity无法释放从而造成内存泄露,通过验证发现View动画动画和补间动画)并不存在此问题...动画元素的交互 将View移动(平移)后,Android3.0之前的系统,不管是View动画还是属性动画,新位置均无法触发单击事件,同时老位置任然可以触发单击事件。...尽管View已经视觉不存在了,将View移回原位置以后,原位置的单击事件继续生效。从3.0开始,属性动画的单击事件触发位置为移动以后的位置,但View动画仍然原位置。

3.3K30

Android动画基础 | 概述、逐动画、视图动画

、位移、旋转等效果;      但是也有它的局限性(局限于视图); 属性动画:操作的对象不再局限于视图,可以真实地改变对象的属性; 2 逐动画 概述: 逐动画也称图片动画通过一个固定区域..."属性,也可实现; 小结: 逐动画的基础是,也即图片,图片一般由美工制作; 没有原图就无法制作逐动画,则应用范围比较小; 将一套图设置AnimationDrawable...的实例调用start()、stop(), 分别做动画的开启和关闭; Tip1 查看继承关系 光标移动到AnimationDrawable, ctrl + h 可以查看继承关系,...最后, 可以看到动画默认是对设置好的一系列图做循环往复的播放的, 可以Activity.java中,通过animationDrawable.setOneShot(true); 将动画设置为只播放这套图一次...原理 上面说过, 逐动画的基础是,也即图片,图片一般由美工制作; 没有原图就无法制作逐动画,则应用范围比较小; 将一套图设置AnimationDrawable

3.9K21

Android 逐动画( Drawable 动画),这一篇就够了

前言 作为 Android 最常见的两种动画形式,逐动画( Drawable 动画),有着极其广泛的应用,它的原理与早起的电影以及 GIF 类似,就是把一张的图,按顺序快速切换,这样一来看上去就好像会动一样...这时如果我们采用,将动画封装在一个资源文件中,需要使用的时候能够像添加背景图一样简单的添加它: 步骤 /res/drawable 文件夹下建立一个名为 abunation_list.xml 的文件...活动代码中,像添加图片资源一样的,为控件添加它 通过 getDrawable 方法,重空间中获得它并添加给 AnimationDrawable 对象 调用 start 方法开启动画 建立资源文件如下...; ---- 注意事项 使用动画时,这里有几个要点需要大家记住: 其一、我的范例代码中,大家可以看到,是直接在 imageView 对象执行过 findViewById 后就添加了的,但是这样会导致一个严重的问题...正确的使用方法,根据活动的运行周期,我们应该在 onResume 方法中添加它,这样就保证了所有的控件都被实例化出来, 其二、对与动画,我们不建议添加太大的图片,因为这很容易导致 OOM,建议大家用

2.5K20

Android:动画和补间动画看这篇就足够了!

Android 中常用的动画分类无外乎三种,最早的 动画 、补间动画,以及 3.0 之后加入的 属性动画,是它们组成了 Android 中各种炫酷亮眼的动画效果。...准备一个动画的图片资源: ? 可以通过代码或者 xml 方式来使用动画 XML 新建工程,然后 drawable 目录下新建一个 xml 文件,名字是 bear_anim ,代码如下: <?...(); animationDrawable.start(); 这样一个动画就展现在我们面前了,想让它停下来也很简单: if(animationDrawable.isRunning...这里先提一下未来会研究的 属性动画,值得注意的是, 无论是动画还是补间动画,都是把动画效果作用到 View ,如果一个不是 View 的元素想实现动画,那这两种就无能为力了,只能请 属性动画 帮忙了...经过朋友的提醒,事实 onAnimationEnd 并不可靠,有时候动画结束时候并不会调用,详情请看 SO 的一个提问: http://stackoverflow.com/questions/5474923

1.8K30

android-drawable子类介绍

ShapeDrawable 被定义一个XML文件中,以   元素起始。其内部的每一个Drawable资源内嵌元素中 <?xml version="1.0" encoding="UTF-8"?...资源文件以元素为根,包含一系列的节点,每一个节点定义了一个(frame)及持续时常。...上述动画运行了3个通过设置android:oneshot 属性(attribute)为true,动画会循环一次并停留在最后一,如果为false那么会轮询(loop)的运行动画 我们可以通过编码来加载播放动画...frameAnimation.start(); 注意:AnimationDrawable. start()方法不能够Activity的onCreate()方法中调用,因为AnimationDrawable...还未完全的附加(attached)到Window,如果你不需要交互而立即播放动画,那么可以onWindowFocusChanged() 方法中,这个方法会在你的Activity Windows获取焦点是触发

41810

动画那点小秘密

补间动画的使用有如下几个特点: 某个动画的实现既可以是一种动画效果,也可以是多种补间动画的组合(需要用到set标签或者AnimationSet类); 补间动画的实现既可以xml中定义,也可以通过代码实现...2 动画   动画是一的显示动画效果。创建动画除了通过xml中用animation-list作为根节点、item定义每一要显示的图片之外,也可以用Java代码的形式来创建动画。...动画需要用到的核心类是AnimationDrawable动画的特点是: 实现简单; 效率低; 视觉工作量大。...其实GIF是将多幅图像保存为一个图像文件,从而形成动画,最常见的就是通过动画串联起来的搞笑gif图,所以归根到底GIF仍然是图片文件格式。但GIF只能显示256色。   ...),为了降低功耗,尽量控制动画的大小,以及动画出现的时机,最好是用户触发某个操作后执行动画效果,不要一进入界面就执行动画; 谨慎使用AnimationDrawable5.0之前会很耗内存;并且AnimationDrawable

87420

Android动画分析

动画分类 Android动画可以分3种:View动画动画和属性动画;属性动画为API11的新特性,低版本是无法直接使用属性动画的,但可以用nineoldAndroids来实现(但是本质还是viiew...不同于View动画,Android系统提供了一个类AnimationDrawable来实现动画动画比较简单,我们看一个例子就行了。 [html] view plain copy <?...,让Button2秒内将宽带从当前宽度增加到500dp,也行你会说,很简单啊,直接用view动画就可以实现,view动画不是有个缩放动画,但是你可以试试,view动画是不支持对宽度和高度进行改变的。...属性动画的工作原理,主要是对作用的对象不断的调用get/set方法来改变初始值和最终值,然后set到动画属性即可。...使用动画时,当图片数量较多且图片分辨率较大的时候容易出现OOM,需注意,尽量避免使用动画

76670
领券