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

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;

}

});

}

}

个人辛勤劳动成果。如有转载,请注明出处,谢谢。

Android开发之事件和事件监听器的更多相关文章

  1. Android开发系列之按钮事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...

  2. Android开发系列之button事件的4种写法

    经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activit ...

  3. Android 开发 框架系列 EventBus 事件总线

    介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...

  4. Android 开发中的View事件监听机制

    在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...

  5. Android开发之点击事件(Button)

    Button点击事件 创建项目: 1.Fiel-------->New ------->Android Application Project 2.将Form Widght 文件中的But ...

  6. Android开发ScrollView上下左右滑动事件冲突整理一(根据事件)

    主要通过重写 onInterceptTouchEvent 事件来解决,代码如下: package com.cm.android.pad.view.itemView; import android.co ...

  7. Android 开发添加控件事件的三种方式

    import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...

  8. android 开发-ListView与ScrollView事件冲突处理(事件分发机制处理)

    ListView和ScrollView都存在滚动的效果,所以一般不建议listView和scrollView进行嵌套使用,但有些需求则需要用到两者嵌套.在android的学习中学了一种事件分发处理机制 ...

  9. Android开发:fragment将事件传递回activity

    fragment触发事件后传递会给activity,可以通过在fragment中定义一个接口,让activity实现这个接口. 具体代码如下 public class AAFragment exten ...

  10. Android开发-之监听button点击事件

    一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...

随机推荐

  1. 微信小程度腾讯地图SDK使用方法

    在开发过程中,不少人肯定遇到过要用到地图,那么在小程序里,腾讯也给出了相应的SDK供我们来使用.那么接下来,就介绍下如何使用该SDK实现获取经纬度然后显示当前用户所在地址 首先第一步:下载腾讯地图SD ...

  2. ios-A+B经典问题

    // // main.m // a+b // #import <Foundation/Foundation.h> #import "Calcultor.h" int m ...

  3. 那些让人睡不着觉的bug,你有没有遭遇过?

    我先讲一个小故事,以前在外企工作时的一个亲身经历. 当时我所在的team,负责手机上多媒体Library方面的开发.有一天,一个具有最高等级的bug被转到了我的手上.这个bug非常诡异,光是重现它就需 ...

  4. SVN版本库的备份、还原、移植(初级篇、中级篇和高级篇)

    版本库数据的移植:svnadmin dump.svnadmin load 导出: $svnlook youngest myrepos //查看到目前为止最新的版本号 $svnadmin dump my ...

  5. dedecms安全篇:织梦文件夹目录权限设置

    织梦各个目录安全详解   做织梦(dedecms)网站安全必看1.a  因为是静态目录,并且在要生成HTML的,所以拒绝脚本执行  允许写入2.data   因为是缓存等,所以充许写入,但是因为这里面 ...

  6. char类型能否存储一个中文字符?为什么

    char类型能否存储一个中文字符?为什么 解答:可以.一个char是两个字节,而一个中文也是两个字节.

  7. [Junit] 测试方法执行顺序

    Junit 4.11里增加了指定测试方法执行顺序的特性测试类的执行顺序可通过对测试类添加注解 “@FixMethodOrder(value)” 来指定,其中value 为执行顺序三种执行顺序可供选择: ...

  8. POJO应用框架:Spring与EJB3.0的比较

    英文原文地址:http://www.onjava.com/pub/a/onjava/2005/06/29/spring-ejb3.html中文地址:http://www.matrix.org.cn/r ...

  9. C语言函数重入

    C语言函数重入 可重入函数:可以被中断的函数,即这个函数执行时,可以中断其执行,可以由一个或多个任务并发使用,而不比担心数据错误. 不可重入函数(不安全函数) 不能运行在多任务环境下,除非能保证互斥( ...

  10. JZOJ.5286【NOIP2017模拟8.16】花花的森林

    Description