2012-08-09 68 views
0

全部 - 我有一个简单的应用程序,我想让一个男人穿过屏幕。现在动画就像粘滞便笺翻书一样在一个地方发生。换句话说,框架像一个纺车一样在一个地方变化。我的问题是我如何才能让动画向前进(按照我所需的速度)以及更改帧?这里是我关于这个问题的代码:Make AnimationDrawable向前移动

public void start(View v) { 
    ImageView img = (ImageView)findViewById(R.id.imageView); 
    img.setBackgroundResource(R.drawable.animation); 
    AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();     
    frameAnimation.start(); 
} 

感谢您的时间和精力!

回答

1

你可以做这样的事情,用你自己的图像(人的形象):

主类:

package com.android.animation; 

import android.app.Activity; 
import android.os.Bundle; 

public class Main extends Activity 
{ 

    Animation myView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     myView = new Animation(this); 
     setContentView(myView); 
    } 
} 

动画类:

package com.android.animation; 

import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.view.View; 

public class Animation extends View 
{ 
Bitmap gBall; 
float changingY; 

public Animation(Context content) 
{ 
    super(content); 

    gBall = BitmapFactory.decodeResource(getResources(), R.drawable.ball); 
    changingY = 0; 
} 

@Override 
protected void onDraw(Canvas canvas) 
{ 
    super.onDraw(canvas); 
    canvas.drawColor(Color.BLACK); 
    canvas.drawBitmap(gBall, (canvas.getWidth()/2), changingY, null); 
    if(changingY < canvas.getHeight()) 
     changingY += 10; 
    else 
     changingY = 0; 

    invalidate(); 
} 
} 

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" /> 

</LinearLayout> 

事实上,如果你想要,你可以继续,复制粘贴我的代码,看看它是如何工作的(确保将图像放入drawable-hdpi文件夹中)...你应该可以将它用作项目的模板。希望能帮助到你!

PS你当然可以,在ChangingY变量更改为ChangingX(例如;当然,你将不得不改变像drawBitmap()方法不同的夫妇的事情..不难虽然),使在一个水平线上将球举...看看它是如何为你工作的。

+0

感谢您的回复。让我试试看...... – ninge 2012-08-09 20:02:48

+0

我得到'myView = new Animation(this)的两个错误; (动画)不适用于参数(动画),不适用于参数(动画)不适用于参数(动画) “有什么想法? – ninge 2012-08-09 20:19:13

+0

这真的很奇怪..我的字面完全相同的代码,因为我张贴在eclipse中,它完美地工作..:O确保您的动画类EXTENDS查看第二个错误。至于第一个错误...请确保您的Animation类中的构造函数设置正确(我在此处张贴的方式)。 – corecase 2012-08-09 20:26:36