演示一个很好的的效果,类似雷电,但功能上差很多,现在就实现了飞机的移动功能,不过,看上去还是挺漂亮的。

首先新建一个布局main.xml文件

View Code
 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:id="@+id/root"
4 android:orientation="vertical"
5 android:layout_width="fill_parent"
6 android:layout_height="fill_parent"
7 >
8 <ImageView
9 android:layout_width="fill_parent"
10 android:layout_height="fill_parent"
11 android:src="@drawable/back"
12 android:scaleType="fitXY"
13 />
14 </LinearLayout>

第二步:建一个飞机类,这样就可以在主程序里new出飞机来了。

View Code
 1 package cn.edu.zwu.tel;
2
3 import android.content.Context;
4 import android.graphics.Bitmap;
5 import android.graphics.BitmapFactory;
6 import android.graphics.Canvas;
7 import android.graphics.Paint;
8 import android.view.View;
9
10 public class PlaneView extends View
11 {
12 public float currentX;
13 public float currentY;
14 Bitmap plane;
15
16 public PlaneView(Context context)
17 {
18 super(context);
19 // TODO Auto-generated constructor stub
20 //定义飞机图片
21 plane = BitmapFactory.decodeResource(context.getResources()
22 , R.drawable.plane);
23 setFocusable(true);
24 }
25 @Override
26 public void onDraw (Canvas canvas)
27 {
28 super.onDraw(canvas);
29 //创建画笔
30 Paint p = new Paint();
31 //绘制飞机
32 canvas.drawBitmap(plane , currentX , currentY , p);
33 }
34 }

第三,修改LayoutKeyEvent01.java文件,可以控制飞机上下移动

View Code
 1 package cn.edu.zwu.tel;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.view.Display;
6 import android.view.KeyEvent;
7 import android.view.View;
8 import android.view.Window;
9 import android.view.WindowManager;
10 import android.view.View.OnKeyListener;
11
12 public class LayoutKeyEvent01Activity extends Activity {
13 /** Called when the activity is first created. */
14 private int speed = 12;
15
16 @Override
17 public void onCreate(Bundle savedInstanceState)
18 {
19 super.onCreate(savedInstanceState);
20 // 去掉窗口标题
21 requestWindowFeature(Window.FEATURE_NO_TITLE);
22 // 全屏显示
23 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
24 WindowManager.LayoutParams.FLAG_FULLSCREEN);
25 // 创建PlaneView组件
26 final PlaneView planeView = new PlaneView(this);
27 setContentView(planeView);
28 planeView.setBackgroundResource(R.drawable.back);
29 // 获取窗口管理器
30 WindowManager windowManager = getWindowManager();
31 Display display = windowManager.getDefaultDisplay();
32 // 获得屏幕宽和高
33 int screenWidth = display.getWidth();
34 int screenHeight = display.getHeight();
35 // 设置飞机的初始位置
36 planeView.currentX = screenWidth / 2;
37 planeView.currentY = screenHeight - 40;
38 // 为draw组件键盘事件绑定监听器
39 planeView.setOnKeyListener(new OnKeyListener()
40 {
41 @Override
42 public boolean onKey(View source, int keyCode, KeyEvent event)
43 {
44 // 获取由哪个键触发的事件
45 switch (event.getKeyCode())
46 {
47 // 控制飞机下移
48 case KeyEvent.KEYCODE_DPAD_DOWN:
49 planeView.currentY += speed;
50 break;
51 // 控制飞机上移
52 case KeyEvent.KEYCODE_DPAD_UP:
53 planeView.currentY -= speed;
54 break;
55 // 控制飞机左移
56 case KeyEvent.KEYCODE_DPAD_LEFT:
57 planeView.currentX -= speed;
58 break;
59 // 控制飞机右移
60 case KeyEvent.KEYCODE_DPAD_RIGHT:
61 planeView.currentX += speed;
62 break;
63 }
64 // 通知planeView组件重绘
65 planeView.invalidate();
66 return true;
67 }
68 });
69 }
70 }

下面是效果图:

android 按键控制飞机



更多相关文章

  1. 开源项目之Android Calender(日历组件)
  2. Android图形显示之本地窗口
  3. Android 组件化的应用 模块通信问题解决
  4. Android界面组件基本用法
  5. Android 组件系列-----Activity初步

随机推荐

  1. BiliBili-IJKPlayer播放器源码分析(一)
  2. Android Activity 及其子类
  3. Android NDK 编译、使用动态库
  4. ndk生成ARM汇编(附代码)
  5. android(2)
  6. [Android] Status Bar Notifications
  7. AndroidManifest.xml 不同变量的作用(持续
  8. 【Android(安卓)开发教程】设置Activity
  9. Netroid:强大、快速、易用、可扩展基于Vo
  10. [Android(安卓)Pro] android 混淆文件pro