Я возился с идеей углубиться в Android SDK с тех пор, как я недавно получил свой Droid X и совсем недавно на нем действовал. Я установил плагин ADT в Eclipse, скачал и установил Android SDK (Rev. 11) и попробовал некоторые вещи. Я хотел попробовать 2-мерную графику, так как она сильно отличается от того, на чем я трачу свои часы на работе (разработка встроенных систем).
Я пытался следовать учебному пособию здесь , но не могу построить из-за некоторых ошибок с двумя реализованными интерфейсами. Я пытаюсь собрать для 2.3.3 на 64-разрядной машине Windows 7. Я включу приведенный ниже код с важным предупреждением о том, что я не являюсь типичным Java-программистом, и что-то очевидное могло бы легко избежать меня.
Drawable Panel.java
package com.android.tutorial;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public abstract class DrawablePanel
extends SurfaceView
implements SurfaceHolder.Callback, ISurface {
private AnimationThread thread;
public DrawablePanel(Context context) {
super(context);
getHolder().addCallback(this);
this.thread = new AnimationThread(getHolder(), this);
}
@Override
public void onDraw(Canvas canvas) {
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
thread.setRunning(true);
thread.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
boolean retry = true;
thread.setRunning(false);
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {
// we will try it again and again...
}
}
}
}
ISurface.java
package com.android.tutorial;
import android.graphics.Canvas;
public interface ISurface {
void onInitialize();
void onDraw(Canvas canvas);
void onUpdate(long gameTime);
}
AndroidTutorial.java
package com.android.tutorial;
import android.app.Activity;
import android.content.Context;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Bundle;
public class AndroidTutorial extends Activity {
AnimatedSprite animation = new AnimatedSprite();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new AndroidTutorialPanel(this));
}
class AndroidTutorialPanel extends DrawablePanel {
public AndroidTutorialPanel(Context context) {
super(context);
}
@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
AndroidTutorial.this.animation.draw(canvas);
}
@Override
public void onInitialize() {
AndroidTutorial.this.animation.Initialize(
BitmapFactory.decodeResource(
getResources(),
R.drawable.explosion),
32, 32, 14, 7);
}
@Override
public void onUpdate(long gameTime) {
AndroidTutorial.this.animation.Update(gameTime);
}
}
}
Я получаю следующую ошибку в DrawablePanel.java
в определениях surfaceChanged (), surfaceCreated () и surfaceDestroyed ():
The method [name of function mentioned above](SurfaceHolder) of type DrawablePanel must override a superclass method.
Это то же самое для onInitialize
и onUpdate
в AndroidTutorial.java
. Я потерян, так как могу копировать / вставлять одно и то же на работе (версия 10 SDK) без ошибок. Есть мысли?