首先声明,View类是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意的扩展。在Android中任何一个View类都只有重写OnDraw方法来实现界面显示。
游戏(或者普通的APP)最重要的是和用户交互,例如键盘,触摸笔,我们需要来处理这些事件。Android中提供了onKeyUP,OnKeyDown,OnKeyMultiple,OnKeyPreIme,OnTouchEvent、OnTrackballEvent等方法。可以轻松的处理游戏的事件消息。所以我们在继承View类的时候,需要重载这几个方法。当在此控件有焦点的时候,有事件发生,会自动调用这些方法。
游戏的过程是不断的绘图和刷新界面。我们这里来看下如何刷新。
Android提供了Invalidate方法来实现界面刷新,注意,invalidate方法并不能直接在线程中调用,因为它违背了单线程模型:Android UI线程操作是不安全的,并且这些操作必须在UI线程中执行。因此Android中最常见的是利用Hander来实现UI线程的更新。
首先我们要重写这个View来,来写一个GameView.
或者简单的一句话说,屏幕更新的动作不能发生在UI线程里面。