1.效果图:按A就往左移动,按W就往上移动,按S就往下移动,按D往右移动
2.planeView.java
1 package com.example.app4; 2 3 import android.content.Context; 4 import android.graphics.Bitmap; 5 import android.graphics.BitmapFactory; 6 import android.graphics.Canvas; 7 import android.graphics.Paint; 8 import android.view.View; 9 10 /** 11 * Created by Administrator on 2018/5/16. 12 */ 13 public class palneView extends View { 14 private Bitmap plane; 15 public float currentX; 16 public float currentY; 17 18 public palneView(Context context) { 19 super(context); 20 plane = BitmapFactory.decodeResource(context.getResources(),R.drawable.plane); 21 setFocusable(true); 22 } 23 24 @Override 25 protected void onDraw(Canvas canvas) { 26 super.onDraw(canvas); 27 Paint paint = new Paint(); 28 canvas.drawBitmap(plane,currentX,currentY,paint); 29 } 30 }
3.MainActivity.java
1 package com.example.app4; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 import android.util.DisplayMetrics; 6 import android.view.KeyEvent; 7 import android.view.View; 8 import android.view.Window; 9 import android.view.WindowManager; 10 11 public class MainActivity extends AppCompatActivity { 12 public palneView pv; 13 private int speed=10; 14 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 super.onCreate(savedInstanceState); 18 //去窗口标题 19 requestWindowFeature(Window.FEATURE_NO_TITLE); 20 //全屏 21 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 22 pv= new palneView(MainActivity.this); 23 setContentView(pv); 24 DisplayMetrics metrics = new DisplayMetrics(); 25 26 //初始位置 27 pv.currentX=metrics.widthPixels/2; 28 pv.currentY=metrics.heightPixels/2; 29 30 pv.setOnKeyListener(new View.OnKeyListener() { 31 @Override 32 public boolean onKey(View v, int keyCode, KeyEvent event) { 33 switch (event.getKeyCode()){ 34 case KeyEvent.KEYCODE_W: 35 pv.currentY-=speed; 36 break; 37 case KeyEvent.KEYCODE_S: 38 pv.currentY+=speed; 39 break; 40 case KeyEvent.KEYCODE_A: 41 pv.currentX-=speed; 42 break; 43 case KeyEvent.KEYCODE_D: 44 pv.currentX+=speed; 45 break; 46 47 } 48 pv.invalidate(); 49 return true; 50 } 51 }); 52 } 53 }