博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
KeyEvent -----------控制飞机上下左右飞行--------------------
阅读量:5230 次
发布时间:2019-06-14

本文共 2769 字,大约阅读时间需要 9 分钟。

两个Java。第一个负责绘制飞机,主Activity负责控制飞机的初始坐标和飞行,不需要layout布局

 

------------------绘制飞机---------------------------

PlaneView.java

package com.example.admin.webchanjian; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.view.View; /**  * Created by admin on 2016/10/6.  */ public class PlainView extends View {
public float currentX; public float currentY; Bitmap plane; public PlainView(Context context){
super(context); plane= BitmapFactory.decodeResource(context.getResources(),R.drawable.plane); setFocusable(true); } @Override public void onDraw(Canvas canvas){
super.onDraw(canvas); Paint p=new Paint(); canvas.drawBitmap(plane,currentX,currentY,p); } } -----------------------------控制飞机飞行-------------------- MainActivity.java
//-------------------Playing Plane------------------------------     private  int speed=10; @Override protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //去掉窗口标题 requestWindowFeature(Window.FEATURE_NO_TITLE); //全屏显示 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); //创建PlaneView组件 final PlainView plainView=new PlainView(this); setContentView(plainView); plainView.setBackgroundResource(R.drawable.back); //获取窗口管理器 WindowManager windowManager=getWindowManager(); Display display=windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics=new DisplayMetrics(); //获取屏幕宽和高 display.getMetrics(displayMetrics); //设置plane的初始位置 plainView.currentX=displayMetrics.widthPixels/2; plainView.currentY=displayMetrics.heightPixels-40; //为PlaneView组件的键盘事件绑定监听器 plainView.setOnKeyListener(new View.OnKeyListener() {
@Override public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (event.getKeyCode()){
//下移 case KeyEvent.KEYCODE_S: plainView.currentY+=speed; break; //上移 case KeyEvent.KEYCODE_W: plainView.currentY-=speed; break; //左移 case KeyEvent.KEYCODE_A: plainView.currentX-=speed; break; case KeyEvent.KEYCODE_D: plainView.currentX+=speed; break; } //通知PlaneView组件重绘 plainView.invalidate(); return true; } }); }
 

 

 

 

 

 

转载于:https://www.cnblogs.com/ZeroMurder/p/5934194.html

你可能感兴趣的文章
制作页面屏蔽层
查看>>
Android下的单例模式
查看>>
android的task任务栈
查看>>
thinkphp在linux下save方法失效原因
查看>>
去掉UItableview headerview黏性(sticky)
查看>>
【Android进阶】Junit单元測试环境搭建以及简单有用
查看>>
C# winform中自定义用户控件 然后在页面中调用用户控件的事件
查看>>
python 列表赋值和列表 sort 方法注意的问题
查看>>
【转载】web前端工程师入门须知
查看>>
MariaDB + Visual Studio 2017 环境下的 ODBC 入门开发
查看>>
HTML-Canvas03
查看>>
系统升级后sequel pro关闭时闪退crash解决办法
查看>>
理解PHP 依赖注入|Laravel IoC容器
查看>>
彻底搞懂Spring类加载(注解方式)
查看>>
推荐一个快速了解移植uboot以及linux到新板子上的ppt教程
查看>>
CentOS7 Windows双系统 修复引导
查看>>
ansible学习笔记二
查看>>
Python之路(第十四篇)os模块
查看>>
P2119 魔法阵
查看>>
Ubuntu 安装 pycharm 社区版
查看>>