我不知道如何处理这个问题。我正在做一个应用程序,其中我想展示一只狗走路。我从哪里开始这样的动画?
*我是否收到了一系列图片(一步一步走)并快速加载它们?
*我是否获得了GIF图片的步行狗并以某种方式将其加载到Android上?
*以编程方式移动像素(我希望不会!)
*我不知道的其他一些图书馆或解决方案?!
请帮助我完成这样的事情,这样我就可以开始阅读那个领域了
谢谢
答案 0 :(得分:2)
如果你有一步一步的图像,那么使用Xml和AnimationDrawable
首先在xml
文件夹文件中创建动画drawable
,例如
walking_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();
结果
答案 1 :(得分:1)
我个人会选择第一种方法的修改版本:创建一个包含狗步动画所有帧的图像文件。使用像this这样的矩形在画布上画出你的狗:
canvas.drawBitmap(dogBitmap, sourceRect, destinRect, null);
其中dogBitmap
是狗动画的位图,sourceRect
是一个Rect对象,包含当前动画帧的像素坐标,destingRect
包含您想要的屏幕坐标绘制狗,最后的空是一个Paint,你只需要过滤图像。
然后只需为每一帧移动sourceRect。
但请注意,在Android应用程序中加载了许多(大)图像文件可能会超出您的堆限制,因为android存储了未压缩的加载位图。
在动画节目中使用的另一种方式(并且稍微进入“以编程方式移动像素”的方向)是使用skeletal animations。使用骨架动画的优势在于,您只需要标准姿势中的狗模型,并且可以使用动画骨骼将其他姿势应用于每个帧中的模型。不幸的是,我不知道任何提供此技术实现的android库。此外,您可能需要自己为动画建模。
答案 2 :(得分:1)