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;
}
});
}
}
个人辛勤劳动成果。如有转载,请注明出处,谢谢。
Android开发之事件和事件监听器的更多相关文章
- Android开发系列之按钮事件的4种写法
经过前两篇blog的铺垫,我们今天热身一下,做个简单的例子. 目录结构还是引用上篇blog的截图. 具体实现代码: public class MainActivity extends Activity ...
- Android开发系列之button事件的4种写法
经过前两篇blog的铺垫,我们今天热身一下,做个简单的样例. 文件夹结构还是引用上篇blog的截图. 详细实现代码: public class MainActivity extends Activit ...
- Android 开发 框架系列 EventBus 事件总线
介绍 GitHub:https://github.com/greenrobot/EventBus 先聊聊EventBus 线程总线是干什么的,使用环境,优点.缺点. 干什么的? 一句话,简单统一数据传 ...
- Android 开发中的View事件监听机制
在开发过程中,我们常常根据实际的需要绘制自己的应用组件,那么定制自己的监听事件,及相应的处理方法是必要的.我们都知道Android中,事件的监听是基于回调机制的,比如常用的OnClick事件,你了解它 ...
- Android开发之点击事件(Button)
Button点击事件 创建项目: 1.Fiel-------->New ------->Android Application Project 2.将Form Widght 文件中的But ...
- Android开发ScrollView上下左右滑动事件冲突整理一(根据事件)
主要通过重写 onInterceptTouchEvent 事件来解决,代码如下: package com.cm.android.pad.view.itemView; import android.co ...
- Android 开发添加控件事件的三种方式
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view ...
- android 开发-ListView与ScrollView事件冲突处理(事件分发机制处理)
ListView和ScrollView都存在滚动的效果,所以一般不建议listView和scrollView进行嵌套使用,但有些需求则需要用到两者嵌套.在android的学习中学了一种事件分发处理机制 ...
- Android开发:fragment将事件传递回activity
fragment触发事件后传递会给activity,可以通过在fragment中定义一个接口,让activity实现这个接口. 具体代码如下 public class AAFragment exten ...
- Android开发-之监听button点击事件
一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...
随机推荐
- Selenium操作之滚动条
在用Selenium做UI自动化时,经常会遇到有些元素找不到之类的问题,但是自己的代码并没有错,元素就是找不到,这是为什么呢?原因很简单,由于页面内容较多,有些内容需要下拉滚动条才会显示,这里介绍一种 ...
- Centos安装ruby--jekyll
想要使用gem install 安装jekyll,执行发现没有gem这个命令,那就需要先安装gem了 yum list '*ruby*' 修改gem源,使用淘宝的源: gem sources --re ...
- 如何使用Photoshop(PS)将图片的底色变为透明
很多时候需要将一张图片的底色变得透明.本文描述了使用PS将图片的一部分变得透明的方法.本例将一段艺术字的背景去掉,将背景透明的文字单独保存成图片,这样以后将这段文字粘贴到其他素材上的时候,就不用担心它 ...
- jsp中判断对象是否存在
<!-- 如果user对象存在,则显示用户名,如果不存在,则显示空值--> <input type="text" id="userName" ...
- JdbcTemplate中的exectue和queryForList方法的性能对比
@Autowired JdbcTemplate jdbcParam; pstm = jdbcParam.getDataSource() ...
- 截图工具gsnap
嵌入式linux截图工具的基本原理就是通过读取Framebuffer,把LCD上显示的内容转换成图片格式文件(jpeg.bmp.png). gsnap.bin 1.jpg /dev/fb0 gsna ...
- HBase学习笔记——Java API操作
1.1. 配置 HBaseConfiguration 包:org.apache.hadoop.hbase.HBaseConfiguration 作用:通过此类可以对HBase进行配置 用法实例: C ...
- python笔记- 发送邮件
依赖: Python代码实现发送邮件,使用的模块是smtplib.MIMEText,实现代码之前需要导入包: import smtplib from email.mime.text import MI ...
- eclipse 下安装 lombok.jar
lombok是一个java 开发插件,可以用来简化代码, 1. 下载lombok.jar https://projectlombok.org/download 2 将lombok.jar文件放在ecl ...
- XV Open Cup named after E.V. Pankratiev Stage 6, Grand Prix of Japan Problem J. Hyperrectangle
题目大意: 给出一个$d$维矩形,第i维的范围是$[0, l_i]$. 求满足$x_1 + x_2 + ...x_d \leq s$ 的点构成的单纯形体积. $d, l_i \leq 300$ 题解: ...