Android(安卓)View
View是android一个超类,这个类几乎包括了所有的屏幕类型。每个View都有一个用于绘图的画布,这个画布可以进行任意的扩展。任何一个View类的重写onDraw方法来实现界面显示。Android中的View提供了onKeyUp、onKeyDown、onKeyMultiple、onKeyPreIme、onTouchEvent、onTrackballEvent等方法,可以轻松处理游戏中的时间信息,所以继承View时,需要重载这几个方法,当有按键按下或者松开时,自然有代码找到对应的方法来进行处理相应的事件。
Android中提供了invalidate方法来实现界面刷新,invalidate是不能在线程中调用的,因为他违背了android的单线程模型,Android中的UI操作并不是线程安全的,并且这些操作必须在U主I线程中执行,因此android中最常用的方法就是使用Handler来实现UI的更新,当然用AsyncTask也可以。
那么什么是主线程呢?进入onCreate、onResume等系统调用的函数的时候,这个时候就是主控线程。这不是我们自己调用onCreate()等方法,在非UI主控线程中,不得修改UI的显示。不然会抛出android.view.ViewRoot$CalledFromWrongThreadException:Onlytheoriginalthreadthatcreatedaviewhierarchycantouchitsviews.的异常。如果需要修改的话,就需要用到Handler,也就是说,我们在非UI主控线程中,如果需要修改UI,则向UI主界面发送一个消息。 handle.sendEmptyMessage(0);
更多相关文章
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用
- python list.sort()根据多个关键字排序的方法实现
- android SystemClock设置系统时间需要system权限
- Android(安卓)三言两语
- Android(安卓)Studio 快捷键
- Vue JS 与Android(安卓)webview的交互
- Material Design:利用RecyclerView CardView实现新闻卡片样式
- Android中线程同步之Mutex与Condtion的用法