Android 不支持Path或者Shape的animation,只能用Frame来模拟。定义好每一帧所需要画的内容即可。
但是有一点Drawable不支持动画启动和结束的callback事件。其实也挺简单,我们重载Drawable的onDraw方法,在那里触发callback事件。
代码片段:
public class CallbackableShapeDrawable extends ShapeDrawable{
public Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
public Path path;
public boolean isLastFrame = false;
public boolean isFirstFrame = false;
public AnimationCallBack callBack;
protected void onDraw(Shape s, Canvas c, Paint p) {
if(isFirstFrame && callBack != null){
callBack.animationStarted(this);
}
c.drawPath(path, paint);
if(isLastFrame && callBack != null){
callBack.animationEnded(this);
}
}
public abstract static class AnimationCallBack {
public abstract void animationStarted(CallbackableShapeDrawable drawable);
public abstract void animationEnded(CallbackableShapeDrawable drawable);
}
}
分享到:
相关推荐
FrameAnimation 用TextureView或SurfaceView 高性能播放帧动画,避免在很多帧的情况下使用AnimationDrawable带来的OOM和卡顿问题。 华为 mate 20X 1920×1080 24bit...com.yuyashuai.frameanimation.FrameAnimationView
例如,我们可以创建一个名为`frame_animation.xml`的文件: ```xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/frame1" android:duration=...
animation.start(); ``` 需要注意的是,帧动画在Android中并不高效,如果帧数过多或者动画持续时间较长,可能会对性能造成影响,尤其是在老旧设备上。因此,对于复杂的动画,更推荐使用`Property Animation`或`View...
基本动画案例:Tween Animation, Frame Animation,介绍参考:http://blog.csdn.net/forwardyzk/article/details/42739281
在Android开发中,帧动画(Frame-by-Frame Animation)是一种常用的技术,用于创建连续的图像序列,模拟视频或gif动图的效果。这种动画通常适用于简单的移动、旋转或渐变效果,比如按钮按下反馈、加载指示器等。接...
2. **定义动画资源**:在项目的res/drawable目录下创建一个XML文件,例如`frameanimation.xml`。在这个文件中,你需要列出所有的帧并指定它们的显示顺序和持续时间。下面是一个基本的示例: ```xml <animation-list...
frameAnimation.start(); ``` **控制动画行为** 除了基本的帧定义外,还可以通过XML属性控制Frame动画的行为。例如,可以设置`repeatCount`来决定动画重复次数(`infinite`表示无限循环),`repeatMode`用来指定...
本资源"FrameAnimation.zip"提供了一个关于如何在Android应用中创建和使用帧动画的实例,包括静态和动态两种实现方式,并特别展示了如何模仿美团应用中的“加载中...”小人奔跑动画。 帧动画的基本原理是通过连续...
3. Leo.Frame.Animation.Group.groupproj:这是项目组文件,通常用来组织多个相关的项目,便于管理。 4. Leo.Frame.Animation_XE10.identcache:这是一个缓存文件,存储了项目中的组件ID信息,有助于IDE快速识别和...
9. **动画监听器**:`Animation.AnimationListener`接口允许我们添加开始、结束和重复事件的回调,以便在动画的各个阶段执行额外的操作。 在实际开发中,自定义动画可能涉及到对XML动画资源的编写,这样可以在布局...
`FrameAnimation`是Android系统提供的一种简单易用的帧动画实现方式,特别适用于新手学习。通过组合一系列静态图片,我们可以创建出流畅的连续动画效果,比如标题中提到的"WiFi信号动画"和"DNF狂战士上挑加下斩动画...
`Android View中添加Animation.rar`这个压缩包文件很可能是包含了一些示例代码或教程,帮助开发者了解如何在Android的视图元素上添加动画效果。这里我们将深入探讨Android中的View动画机制,包括基本动画类型、如何...
- 在`res/anim`目录下创建一个XML文件,例如`frame_animation.xml`。 - 在XML文件中,定义`<animation-list>`标签作为根元素,设置`android:oneshot`属性来决定动画是否只播放一次(true为单次,false为循环)。 ...
创建一个XML文件,例如`frame_animation.xml`,并在其中定义`<animation-list>`元素。每个`<item>`标签代表一个帧,通过`android:drawable`指定帧图片,`android:duration`设置每帧持续的时间(以毫秒为单位)。 ...
animation.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { // 动画开始 } @Override public void onAnimationEnd(Animation ...
frameAnimation.start(); ``` 三、源码解析 在Android系统中,帧动画的实现主要涉及到两个关键类:AnimationDrawable和AnimationDrawableItem。前者是帧动画的容器,后者代表每一帧的具体信息。 1. ...
frameAnimation.start(); } }); ``` 此外,Android还提供了其他类型的动画,如TranslationAnimation(平移)、ScaleAnimation(缩放)和AlphaAnimation(透明度变化),这些可以组合使用以创建更复杂的效果。 在...
在Android工程的res/drawable目录下创建一个XML文件,例如`frameanimation.xml`,作为帧动画的资源配置。在这个文件中,你需要定义每一帧图片和它们的持续时间。比如: ```xml <animation-list xmlns:android=...
在`res/anim`目录下创建一个`frame_animation.xml`文件,包含多个`<item>`标签,每个代表一帧: ```xml <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@...
if (frameAnimation.isRunning()) { // 判断动画是否正在运行 frameAnimation.stop(); } else { frameAnimation.start(); } ``` 5. **优化帧动画** - 为了提高性能,可以考虑以下几点: - 减少帧数:尽量...