public class MainActivity extends Activity {
private int speed = 10;
PlaneView planeView = new PlaneView(null);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//final PlaneView planeView = new PlaneView(this);
setContentView(planeView);
planeView.setBackgroundResource(R.drawable.back);
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
planeView.currentX = metrics.widthPixels / 2;
planeView.currentY = metrics.heightPixels - 400;
onKeyListener listener = new onKeyListener();
planeView.setOnKeyListener(listener);
/******************外部类作为事件监听器*********************/
}
/******************外部类作为事件监听器*********************/
class onKeyListener implements OnKeyListener{
/*private PlaneView plane;
public onKeyListener(PlaneView planeView){
this.plane = planeView;
}*/
@Override
public boolean onKey(View source, int keycode, KeyEvent event) {
// TODO Auto-generated method stub
switch(event.getKeyCode()){
case KeyEvent.KEYCODE_S:
planeView.currentY += speed;
break;
case KeyEvent.KEYCODE_W:
planeView.currentY -= speed;
break;
case KeyEvent.KEYCODE_A:
planeView.currentX -= speed;
break;
case KeyEvent.KEYCODE_D:
planeView.currentX += speed;
break;
}
planeView.invalidate();
return true;
}
}
这是自定义View
public class PlaneView extends View{
public float currentX;
public float currentY;
Bitmap plane;
Paint p = new Paint();
public PlaneView(Context context) {
super(context);
// TODO Auto-generated constructor stub
plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.plane);
setFocusable(true);
}
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawBitmap(plane, currentX, currentY, p);
}
}