androd事件处理简介
控制飞机移动的简单实例
package peng.liu.test; import android.app.ActionBar; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.Display; import android.view.KeyEvent; import android.view.Menu; import android.view.View; import android.view.Window; import android.view.WindowManager; public class MainActivity extends Activity{ int speed = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); final Plane plane = new Plane(this); setContentView(plane); plane.setBackgroundResource(Color.RED); WindowManager manager = getWindowManager(); Display display = manager.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); plane.currentX = metrics.widthPixels/2; plane.currentY = metrics.heightPixels-40; plane.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int i, KeyEvent keyEvent) { switch(keyEvent.getKeyCode()){ case KeyEvent.KEYCODE_S: plane.currentY+=speed; break; case KeyEvent.KEYCODE_W: plane.currentY-=speed; break; case KeyEvent.KEYCODE_A: plane.currentX-=speed; break; case KeyEvent.KEYCODE_D: plane.currentX+=speed; break; } plane.invalidate(); return true; } }); } }
package peng.liu.test; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; /** * Created by lplp on 2015/6/10. */ public class Plane extends View { public float currentX,currentY; public Bitmap plane; public Plane(Context context){ super(context); plane = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher); setFocusable(true); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint p = new Paint(); canvas.drawBitmap(plane,currentX,currentY,p); } }