我不知道如何解决这个问题。我正在做一个应用程序,我想在其中展示遛狗。我从哪里开始制作这样的动画?
*我是否会获得一组图片(一步一步地走)并快速加载它们?
*我是否会得到一张遛狗的 GIF 图片并以某种方式将其加载到 Android 上?
*以编程方式移动像素(我希望不是!)
*我不知道的其他一些库或解决方案?!
请帮助我了解如何完成类似的事情,以便我可以开始在该领域阅读
谢谢
我不知道如何解决这个问题。我正在做一个应用程序,我想在其中展示遛狗。我从哪里开始制作这样的动画?
*我是否会获得一组图片(一步一步地走)并快速加载它们?
*我是否会得到一张遛狗的 GIF 图片并以某种方式将其加载到 Android 上?
*以编程方式移动像素(我希望不是!)
*我不知道的其他一些库或解决方案?!
请帮助我了解如何完成类似的事情,以便我可以开始在该领域阅读
谢谢
如果你有图像一步一步然后使用 Xml 和AnimationDrawable
首先创建动画xml
内部drawable
文件夹文件,例如
walk_dog.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/step1" android:duration="200" />
<item android:drawable="@drawable/step2" android:duration="200" />
<item android:drawable="@drawable/step3" android:duration="200" />
<item android:drawable="@drawable/step4" android:duration="200" />
</animation-list>
现在到ImageView
集合android:background="drawable/walking_dog"
在活动onCreate
添加
//walkingdog -> is the imageview id
ImageView walkingDog = ( ImageView ) findViewById(R.id.walkingdog);
//now start walk
AnimationDrawable theDogAnimation = (AnimationDrawable) walkingDog.getBackground();
theDogAnimation.start();
结果
我个人会选择第一种方法的修改版本:创建一个包含遛狗动画所有帧的图像文件。使用 Rects 在画布上绘制你的狗,如下所示:
canvas.drawBitmap(dogBitmap, sourceRect, destinRect, null);
其中dogBitmap
是狗动画的位图,sourceRect
是包含当前动画帧的像素坐标的 Rect 对象,包含destingRect
要绘制狗的屏幕坐标,最后的 null 用于仅在以下情况下才需要的 Paint你想过滤图像。然后只需为每一帧移动 sourceRect 。但请注意,在 android 应用程序中加载许多(大)图像文件可能会超出您的堆限制,因为 android 会存储未压缩的加载位图。
动画程序中使用的另一种方法(并且有点“以编程方式移动像素”的方向)是使用骨骼动画。使用骨骼动画的优点是您只需要标准姿势的狗模型,并且可以使用动画骨骼在每一帧中将其他姿势应用于模型。不幸的是,我不知道任何提供这种技术实现的 android 库。此外,您可能必须自己建模动画。