public class PlaneView extends View {
public float currentX;
public float currentY;
private final Bitmap mBitmap_plane;
public PlaneView(Context context) {
super(context);
//将图片转换成Bitmap形式
mBitmap_plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.plane);
//设置焦点
setFocusable(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//创建画笔
Paint p = new Paint();
//在画布上画一张图片
canvas.drawBitmap(mBitmap_plane,currentX,currentY,p);
}
}
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.KeyEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private int speed = 10;
private PlaneView mPv;
private myOnKeyListener listener = null;
private ImageView mImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide();
//全屏显示
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
mPv = new PlaneView(this);
setContentView(mPv);
mPv.setBackgroundResource(R.color.colorPrimary);
//获取窗口管理器
WindowManager windowManager = getWindowManager();
Display defaultDisplay = windowManager.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
//获取屏幕的宽高
defaultDisplay.getMetrics(metrics);
//设置飞机的初始位置
mPv.currentX = metrics.widthPixels / 2;
mPv.currentY = metrics.heightPixels - 40;
mPv.setOnKeyListener(listener == null ? new myOnKeyListener() : listener);
}
class myOnKeyListener implements View.OnKeyListener {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_S:
mPv.currentY += speed;
break;
case KeyEvent.KEYCODE_W:
mPv.currentY -= speed;
break;
case KeyEvent.KEYCODE_A:
mPv.currentX -= speed;
break;
case KeyEvent.KEYCODE_D:
mPv.currentX += speed;
break;
}
mPv.invalidate();
return true;
}
}
}
当移动多次就卡死不动了,LogCat也没有打印日志,我的开发环境是AS2.1