Alan's Blog

导航

Android View

  Viewandroid一个超类,这个类几乎包括了所有的屏幕类型。每个View都有一个用于绘图的画布,这个画布可以进行任意的扩展。任何一个View类的重写onDraw方法来实现界面显示。Android中的View提供了onKeyUponKeyDownonKeyMultipleonKeyPreImeonTouchEventonTrackballEvent等方法,可以轻松处理游戏中的时间信息,所以继承View时,需要重载这几个方法,当有按键按下或者松开时,自然有代码找到对应的方法来进行处理相应的事件。

  Android中提供了 invalidate 方法来实现界面刷新,invalidate是不能在线程中调用的,因为他违背了android的单线程模型,Android中的UI操作并不是线程安全的,并且这些操作必须在U主I线程中执行,因此android中最常用的方法就是使用Handler来实现UI的更新,当然用AsyncTask 也可以。

  那么什么是主线程呢?进入onCreateonResume等系统调用的函数的时候,这个时候就是主控线程。这不是我们自己调用onCreate()等方法,在非UI主控线程中,不得修改UI的显示。不然会抛出android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.的异常。如果需要修改的话,就需要用到Handler也就是说,我们在非UI主控线程中,如果需要修改UI,则向UI主界面发送一个消息。handle.sendEmptyMessage(0);

posted on 2011-08-27 01:49  Alan's Blog  阅读(911)  评论(0编辑  收藏  举报