WebKit for Android分析:表单控件
转载时请注明出处和作者联系方式: https://mogoweb.net(betway官网首页) betway官网首页@gmail.com
所谓表单控件,指的是html中的radio, checkbox, text, button, select等。在进行WebKit移植时,需要解决两件事:渲染和事件处理。下面就分析WebKit for Android渲染和事件处理。
一、表单控件的绘制
表单控件的渲染并不难,不外乎就是绘图和贴图。但在WebKit中,为了达到和平台一致的视感(look & feel), 定义了一个RenderTheme,包含了paintButton, paintCheckbox, paintTextField等方法,具体实现则由各平台的移植层实现。Android平台的RenderTheme类实现为RenderThemeAndroid,具体的控件绘制类位于Source/WebKit/android/下,类关系图如下:
类图中并没有TextField和TextArea的绘制类,这是因为文本框只需使用线条绘制边框及绘制文字即可,Webkit有默认的实现,Android移植中没有重新实现。
RenderSkinNinePatch类是一个实用类,用于处理图片拉伸问题。RenderSkinCombo的实现实际上是贴一个背景图片,让人感觉是一个ComboBox/ListBox,但是ComboBox/ListBox的宽高不是固定的,这样在贴图时避免不了需要对图片进行拉伸。RenderSkinNinePatch则是将图片划分为9个部分,避免拉伸带来失真。
二、表单控件的事件处理
表单控件还需要响应用户的事件,比如点击button, 选择radio button,输入文本等等。对于radio button/checkbox而言,处理比较简单,只需更新一下状态数据和图片,而ComboBox/TextField/TextArea的处理要复杂一些,因为涉及到输入。在android webkit实现中,ComboBox和文本框是调用系统控件实现的。
- 待续
转载时请注明出处和作者联系方式: WebKit for Android分析:表单控件(betway官网首页) @gmail.com
你好,我在利用webview加载html的时候,老是
10-11 09:22:05.739: ERROR/Web Console(2265): Uncaught SyntaxError: Unexpected string at null:1
还有我把板子的由2.2升级到4.0后,对于同样的程序,在4.0运行,比2.2上多了好多下面这个错误
10-11 09:22:07.779: DEBUG/chromium(2265): Unknown chromium error: -6
哎,都搜好久了,均无结果~~~还望多帮帮么。
本人Q:348636152