zoukankan      html  css  js  c++  java
  • Android开发之事件和事件监听器

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

    PlaneView.java:

    public class PlaneView extends View{

    public float currentX;

    public float currentY;

    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 MainActivity extends Activity {


    //定义飞机移动速度

    private int speed = 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

    public boolean 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();

    return true;

    }

    });

    }

    }

    个人辛勤劳动成果。如有转载,请注明出处,谢谢。
  • 相关阅读:
    Zabbix使用grafana展示图形
    Jumpserver堡垒机
    ELK之使用filebeat的多行过滤插件把多行合并成一行
    [0] Enterprise Architect
    [0] LoadRunner
    [0] Axure
    [0] MVC&MVP&MVVM差异点
    [0] 传统架构与领域模式架构对比
    [转] .NET领域驱动设计—看DDD是如何运用设计模式颠覆传统架构
    [转] .NET领域驱动设计—实践(穿过迷雾走向光明)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10001316.html
Copyright © 2011-2022 走看看