Android开发之事件和事件监听器

来源:互联网 发布:java程序员常用工具 编辑:程序博客网 时间:2024/05/22 05:25

写了一个打飞机的小程序,用于作为事件监听的学习,此程序需要有实体按键的手机才能执行。

PlaneView.java:

public class PlaneViewextends View{

public floatcurrentX;

public floatcurrentY;

Bitmap plane;


public PlaneView(Context context) {

super(context);

// TODO Auto-generated constructor stub

//定义飞机图片

plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.feiji);

setFocusable(true);

}

public void onDraw(Canvas canvas)

{

super.onDraw(canvas);

Paint p = new Paint();

canvas.drawBitmap(plane,currentX, currentY, p);

}


}

Activity.java

public class MainActivityextends Activity {


//定义飞机移动速度

private intspeed = 12;


@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.feiji);

WindowManager win = getWindowManager();

Display dis = win.getDefaultDisplay();

int width = dis.getWidth();

int height = dis.getHeight();

//设置飞机的初始位置

planeView.currentX = width / 2;

planeView.currentY = height - 40;

//为draw组建键盘事件绑定监听器

planeView.setOnKeyListener(new OnKeyListener() {

@Override

publicboolean onKey(View source, int keyCode, KeyEvent event) {

//TODO Auto-generated method stub

//获取由哪个键出发的时间

switch(event.getKeyCode())

{

case KeyEvent.KEYCODE_DPAD_DOWN:

planeView.currentY +=speed;

break;

case KeyEvent.KEYCODE_DPAD_UP:

planeView.currentY -=speed;

break;

case KeyEvent.KEYCODE_DPAD_LEFT:

planeView.currentX -=speed;

break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

planeView.currentX +=speed;

break;

}

//通知planeView组建重绘

planeView.invalidate();

returntrue;

}

});

}

}

个人辛勤劳动成果,如有转载,请注明出处,谢谢。
0 0
原创粉丝点击