2012-08-09 92 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