首页 > Android浏览器 > WebKit for Android分析:表单控件

WebKit for Android分析:表单控件

2012年4月14日 发表评论 阅读评论

转载时请注明出处和作者联系方式: http://mogoweb.net mogoweb@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/下,类关系图如下:

html_control_rendering

类图中并没有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分析:表单控件 mogoweb@gmail.com

分类: Android浏览器 标签: ,
  1. miyuehu
    2012年10月11日17:48 | #1

    你好,我在利用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

  1. 本文目前尚无任何 trackbacks 和 pingbacks.