首页
学习
活动
专区
工具
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调试。

5.1K90
  • Android中的动画

    其中帧动画使用AnimationDrawable来实现,在本质上是将多个图像以相同或不同的时间间隔进行切换来实现动画。...帧动画实际上是由若干个以一定的时间间隔进行切换的图像组成的。比如电影的原理就类似于帧动画,一般电影是每秒25帧。...(2) 在res/anim文件夹当中创建一个xml类型的文件,将所有帧都列出来以定义Animations动画序列,在此处可以通过oneshot设置动画是否重复播放。 ​...通过上述代码我们会发现,所有对帧动画的控制都是通过AnimationDrawable实现的。...,这样看来依然过于繁琐,而对于这种简单的移动、放大缩小、旋转等动画效果,安卓系统也为我们提供了更加方便的动画生成技术,我们称之为补间动画(Tweened Animations)。

    11510

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

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

    1.4K30

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

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

    1.2K60

    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值。

    2.1K80

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

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

    3.5K30

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

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

    4K21

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

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

    3.3K20

    Android动画深入分析

    动画分类 Android动画可以分3种:View动画,帧动画和属性动画;属性动画为API11的新特性,在低版本是无法直接使用属性动画的,但可以用nineoldAndroids来实现(但是本质还是viiew...android:interpolator 表示动画集合所采用的插值器,插值器影响动画速度,比如非匀速动画就需要通过插值器来控制动画的播放过程。...不同于View动画,Android系统提供了一个类AnimationDrawable来实现帧动画,帧动画比较简单,我们看一个例子就行了。 在2秒内将宽带从当前宽度增加到500dp,也行你会说,很简单啊,直接用view动画就可以实现,view动画不是有个缩放动画,但是你可以试试,view动画是不支持对宽度和高度进行改变的。...属性动画的工作原理,主要是对作用的对象不断的调用get/set方法来改变初始值和最终值,然后set到动画属性上即可。

    848100

    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

    2K30

    帧动画和补间动画

    逐帧显示一张图片,连起来成为动画 在res/drawable/目录下,创建一个xxx.xml的文件 添加节点,设置是否循环android:oneshot:”false”...添加条目节点,设置资源android:drawable=”@drawable/xxx” 设置执行时间,android:duration=”100” 逐帧添加对应的图片 获取ImageView...方法获取到AnimationDrawable对象 getBackground()方法是异步的在一个单独的线程里面执行的,因此,有时候,下面的代码是播放不了的,建议放在按钮点击事件里,或者屏幕触摸事件里...调用AnimationDrawable对象start()方法,开始播放 tween动画 透明度 获取AlphaAnimation对象,new AlphaAnimation(),参数:从0.0f透明度,...获取AnimationSet对象,new出来 获取到上面的多个动画对象 调用AnimationSet对象的addAnimation()方法,把动画添加进来,参数:动画 多次添加就可以了 调用View对象的

    74520

    Android开发之帧动画

    Android动画主要分为3种 View动画(Android开发之View动画) 帧动画 属性动画 何为帧动画?...帧动画最简单,通过顺序播放一系列的图像产生动画,有点类似动画片 以tomcat案例来讲解 1、首先准备好一组图片(网上找的现成的一组图片),然后定义一个AnimationDrawable,命名为ani.xml...android:layout_height="match_parent" android:background="@drawable/ani" /> 3、通过...AnimationDrawable 来播放动画,这里设置点击背景时触发动画,代码很简单,就没有加注释了 public class MainActivity extends Activity {...帧动画.gif 5、注意点 帧动画虽然比较简单,但由于都是图片连续播放形成的,在图片比较多且较大的时候,容易引起OOM,所以需要谨慎选择。

    69480
    领券