Android-UI基础

来源:互联网 发布:时间旅行 辩证法 知乎 编辑:程序博客网 时间:2024/06/08 11:55
Android-UI基础
一 UI和UI接口
UI就是用户接口
UI继承View这个基类,看View的源代码

UI的基本架构,附上一张图:


二 常用概念
UI的呈现,UI的事件,UI的布局
控件树的概念:ViewGroup下面又可以有ViewGroup或者View

三 自定义界面view
1 自定义View类继承自系统的View,
2 然后在Activity中实例化自定义View类的对象x
3 最后setContentView(x)
可以进行代码跟踪
1 Activity->phonewindow->view->layout
2 Activity->phonewindow->doceview
3 canvas内的画图的方法
4 view类onDraw

四 界面组件呈现的底层机制

1 surface下是图像显示驱动,字符设备驱动:framebuffer
2 skia:2D类库
3 OpenGL:3D类库
如下图:


五 Android界面事件机制
1 事件分类:
KeyEvent:硬键盘的点击事件
TouchEvent:触摸事件
View和Activity都有上面两种事件机制
TrackballEvent:轨迹球事件

2 事件触发的两种方法:
内部方法:
扩展View的时候回调相应的事件函数
onKeyUp
onTouchEvent
注意,需要设置自定义控件的焦点
setFocusable(true);
setFocusableInTouchMode(true);

外部方法:
注册事件监听器

3 时间分发dispatchKeyEvent:
KeyEvent分发:
消息发到当前上下文
context发到window
window优先发给输入法窗体
发给rootView(DecorView)
发给焦点View(事件接收机制默认返回false,允许下一步接受)
自定义控件->linux通过pipe进程间通讯传给->Activity->phonewindows->rootview->焦点view

TouchEvent分发:
从下往上:
自定义控件->rootview->phonewindow->activity

六 自定义界面的呈现
界面呈现机制:
1 呈现的两种方式:
xmlLayout呈现
动态编码实现:动态布局和画动态控件
2 呈现的核心:onDraw方法的使用

七 补充
用户交互设计师:给出具体的想法和UI图
视觉美工师:实现想法->真正的界面效果图
界面实现:程序员或者是编码能力强的视觉设计师
界面为何用xml:可以分离,程序员可以不去管xml的layout,让视觉设计师实现

八 面试题
1 View是所有控件的基类,说说他和Activity和window的关系
2 view的核心是什么,能否说下里面的onDraw函数
3 自定义组件如何实现自定义事件
4 NinePatch是什么?要求会使用
5 介绍下Android的界面事件机制
0 0
原创粉丝点击