
正文
android帧动画,android帧动画面试
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
android 帧动画 如何在代码中设置时长
嗯,如果你的图片也是采用代码加载的话,可以如下这么写
mFrameAnimation = new AnimationDrawable();
mFrameAnimation.addFrame(getResources().getDrawable(R.drawable.icon1), 200);
mFrameAnimation.addFrame(getResources().getDrawable(R.drawable.icon2), 200);
后面那个 200 就是时长了
如果你想从 res/drawable 读取动画,然后再修改时长的话,只能循环遍历再修改了,抱歉,因为电脑问题,没法给你完整的演示代码,关于 Android 帧动画,你可以访问 Android Frame Animation 帧动画
相关问答
Q1: Android 帧动画何时停止播放
可以通过一些其他方式来做到。
方式一,当动画开始start之后,我们可以通过检测是否到达帧动画的最后一帧,来确定动画是否播完。这种方式可以保证动画播完。
方式二,重写AnimationDrawable,获得totalDuration,然后动画start之后的totalDuration,调用结束的接口回调onAnimationFinshed()。为什么必须重写呢?因为,AnimationDrawable仅提供了每一帧的duration,而不能直接获得动画总的duration。
当然还有一些变种的方法,但是其大体思路都应该差不多。至于动画是否流畅播放,这要取决于你播放动画的时候,系统的繁忙程度。
Q2: android 怎么添加帧动画效果
Android的SDK提供了三种类型的动画,分别是补间动画、逐帧动画和插值属性动画。下面先介绍第一种动画效果-补间动画。补间动画可以应用于View,让开发者可以定义一些关于大小、位置、旋转和透明度的改变效果,达到让View的内容动起来的效果。补间动画是使用Animation类创建的,它有4个直接子类,分别实现不同的动画效果,分别为:AlphaAnimation 渐变透明度动画效果,即淡入淡出效果ScaleAnimation 渐变尺寸伸缩动画效果,即缩放效果TranslateAnimation 画面转换位置移动动画效果,移动效果RotateAnimation 画面转移旋转动画效果,即旋转效果要使用补间动画的效果,有两种方法,第一种是在XML文件中设置动画效果;第二种是在Java代码中设置。下面分别介绍这两种方法:1.在XML文件中设置方式:在Android项目的res目录下新建anim文件夹,然后在anim文件夹下新建firstanim.xml,添加动画效果的配置代码,示例代码如下:[html]android:fromAlpha="0.1"android:toAlpha="1.0"android:duration="3000"/android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromXScale="0.0"android:toXScale="1.4"android:fromYScale="0.0"android:toYScale="1.4"android:pivotX="50%"android:pivotY="50%"android:fillAfter="false"android:duration="700" /android:fromXDelta="30"android:toXDelta="-80"android:fromYDelta="30"android:toYDelta="300"android:duration="2000"/android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromDegrees="0"android:toDegrees="+350"android:pivotX="50%"android:pivotY="50%"android:duration="3000" /android:fromAlpha="0.1"android:toAlpha="1.0"android:duration="3000"/android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromXScale="0.0"android:toXScale="1.4"android:fromYScale="0.0"android:toYScale="1.4"android:pivotX="50%"android:pivotY="50%"android:fillAfter="false"android:duration="700" /android:fromXDelta="30"android:toXDelta="-80"android:fromYDelta="30"android:toYDelta="300"android:duration="2000"/android:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromDegrees="0"android:toDegrees="+350"android:pivotX="50%"android:pivotY="50%"android:duration="3000" /在Activity中的onCreate()方法中,获取在XML中配置的动画效果,代码如下:[java]Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);如果这个动画效果使用在一个ImageView上,可以参考如下代码:[java]imageView.startAnimation(animation);imageView.startAnimation(animation);2.在Java代码中设置方式:以AlphaAnimation为例,[java]//首先声明Animation的一个对象private Animation alpha;//在Activity的onCreate()方法中实例化这个对象alpha=new AlphaAnimation(0.1f, 1.0f);//设置动画持续时间为3秒alpha.setDuration(3000);//首先声明Animation的一个对象private Animation alpha;//在Activity的onCreate()方法中实例化这个对象alpha=new AlphaAnimation(0.1f, 1.0f);//设置动画持续时间为3秒alpha.setDuration(3000);如果这个动画效果使用在一个ImageView上,可以参考如下代码:[java]imageView.startAnimation(alpha);imageView.startAnimation(alpha);
Q3: Android动画之ViewPropertyAnimator(专用于view的属性动画)
属性动画对比原来的视图动画有很多的优点,属性动画可以对所有的对象做动画操作,但Android开发中需要做动画最多的还是View,如果只是对一个view做动画,很少的几个属性还行,如果是对同一个view的十几个属性同时做动画,相信属性动画的写法是比较繁琐的。ViewPropertyAnimator从名字就可以看出是专用于View的属性动画,在API12被提供。ViewPropertyAnimator专用于操作View动画,语法更加简洁,使用更加方便。
developer:
如何获取ViewPropertyAnimator 对象:
ViewPropertyAnimator 没有构造函数,通过View.animate()方法可以方便的获取ViewPropertyAnimator 对象,此时获取的动画对象就专用于操作当前view。
setDuration(); //设置动画时长
setInterpolator(); //设置插值器
setStartDelay(); //设置延迟开始时间
start(); //立刻开始动画
cancel(); //取消动画
明显看到图片先往下走了一段,然后向左的动画才开始执行。
链式操作
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).translationY(300).scaleX(0.5f);
以上函数的执行,会导致相同动画的cancle,以上函数都是除了坐标相关都是以view左上角为坐标原点。
方法都比较简单,下面距几个列子:
首先利用translationX,translationXBy来区分By的意义:
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationY(300);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).translationYBy(300);
translationYBy 可以多次移动View,translationY多次执行没有效果。
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(3000).x(100).y(100);
ViewPropertyAnimator viewPropertyAnimator = gongxiang.animate().setDuration(2000).rotation(270);
据观察withEndAction相当于动画开始,withStartAction相当于动画结束。
可以看到可以添加setUpdateListener监听,但无法通过这个监听函数监听到当前动画的信息,所以这个监听函数可能用处不大。
Animation动画概述和执行原理
Android动画之补间动画TweenAnimation
Android动画之逐帧动画FrameAnimation
Android动画之插值器简介和系统默认插值器
Android动画之插值器Interpolator自定义
Android动画之视图动画的缺点和属性动画的引入
Android动画之ValueAnimator用法和自定义估值器
Android动画之ObjectAnimator实现补间动画和ObjectAnimator自定义属性
Android动画之ObjectAnimator中ofXX函数全解析-自定义Property,TypeConverter,TypeEvaluator
Android动画之AnimatorSet联合动画用法
Android动画之LayoutTransition布局动画
Android动画之共享元素动画
Android动画之ViewPropertyAnimator(专用于view的属性动画)
Android动画之Activity切换动画overridePendingTransition实现和Theme Xml方式实现
Android动画之ActivityOptionsCompat概述
Android动画之场景变换Transition动画的使用
Android动画之Transition和TransitionManager使用
Android动画之圆形揭露动画Circular Reveal
Android 动画之 LayoutAnimation 动画
Android动画之视图动画的缺点和属性动画的引入






