安卓基于监听事件处理(一)

本博客是记录学习历程的,主要用于方便自己以后查阅复习相关知识


package com.example.eventmanage;

import com.wnl.view.PlaneView;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.Window;
import android.view.WindowManager;

public class MainActivity extends ActionBarActivity {

     private int speed= 10;//飞机速度

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题
        /**   getWindow():取得当前Activity的View的Window实例
         * 
         */
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);//全屏显示
        super.onCreate(savedInstanceState);
       final PlaneView planeView=new PlaneView(this);
        setContentView(planeView);
        planeView.setBackgroundColor(android.R.color.background_dark);
      //Retrieve the window manager for showing custom windows
        WindowManager windowManager=getWindowManager();//为展示自定义View准备
        Display display=windowManager.getDefaultDisplay();//取得windowManager关联的Display
       /*
        * DisplayMetrics类描述了一个display的一般信息,
        * 例如大小,密度等
        */
        DisplayMetrics metrics=new DisplayMetrics();
        //取得描述display的metrics
        display.getMetrics(metrics);
        /**getWidth()和display.getHeight()方法以及被抛弃,
         * 使用getSize (Point outSize)来代替
         *     
         *     注意: getSize (Point outSize)的返回值不一定就是屏幕的真实大小,
         *         因为有时候应用的窗口使用了视图修饰,例如ActionBar等控件来影响了
         *         窗口大小的测得值
         */
        planeView.current_x=display.getWidth()/2;
        planeView.current_y=display.getHeight()-40;

        planeView.setOnKeyListener(new OnKeyListener() {

            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                switch (event.getKeyCode()) {//getKeyCode()返回的是物理键
                case KeyEvent.KEYCODE_S:
                    planeView.current_y+=speed;
                    break;
                case KeyEvent.KEYCODE_W:
                    planeView.current_y-=speed;
                    break;
                case KeyEvent.KEYCODE_A:
                    planeView.current_x-=speed;
                    break;
                case KeyEvent.KEYCODE_D:
                    planeView.current_x+=speed;
                    break;
                }

                planeView.invalidate();
                return true;
            }
        });
    }


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值