`
izuoyan
  • 浏览: 9222253 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之67---BREW 应用中的SVG技术

阅读更多

SVG是二维的向量图像格式,是由W3C3GPP的提出的标准,实现了内置的交互性,支持跨越显示环境的缩放,文件尺寸比BMP, JPEG,GIF等格式还要小。SVG的编辑工具非常简单易用,基于XML的格式从而容易创建和修改,支持富文本选项。

BREW 3.1.4开始,IMediaSVG 接口开始支持SVG的播放,暂停,终止,快进和快退等,同时支持按键,笔操作,旋转和缩放等操作。

希望使用SVG的时候,首先需要使用一些商用的图像编辑工具来创建SVG文件,例如 Beatware Mobile Designer 2.0 Beatware e-PicturePro 5.0Ikivo Animator 2.0 Adobe® Illustrator CS2®Adobe® GoLive CS2®Open source Inkscape 0.44.1等等。

然后,生成BREW中需要的相关内容,例如:

<!-- Button -->

<g id = "Button_Back2" nav-prev = "url(#Button_GetNew)" navnext = "url(#Button_Options5)" focusable="false" >

其中定义了 nav-prevnav-next两个元素等等,来保证导航功能。一般的情况下,需要禁止聚焦功能,例如<g focusable="false" id="Animation_38">,并且需要使用gzip压缩目标文件。

SVG的内容生成之后,一般使用web浏览就可以了解SVG的基本显示,并进行一下交互性测试。但需要注意的是,不同浏览器对SVG的支持程度也不相同。SVG中的XML 文档结构可以通过Opera 浏览器来验证,而且该浏览器还能够报告出错误的行号。在安装了SVG的扩展类之后,BREW模拟器就能够播放SVG了。

BREW应用中,首先要获得IMediaSVG接口:

ISHELL_CreateInstance(pme->m_pIShell,AEECLSID_MEDIASVG,(void**)pme->m_pIMediaSVG);

其次,确定需要播放的文件内容:

AEEMediaData mData;

mData.clsData = MMD_FILE_NAME;

mData.pData = svg_filename;

mData.dwSize = 0;

IMEDIA_SetMediaData(pMe->pIMediaSVG, &mData);

然后,注册回调函数:

IMEDIA_RegisterNotify(pMe->pIMediaSVG, MediaNotifyCB, pMe);

最后,就可以使用IMEDIA_Play(pMe->pIMediaSVG)来播放文件了。其中回调函数MediaNotifyCB负责获取SVG文件中的一个帧,并显示在屏幕上。

void MediaNotifyCB(void * pUser, AEEMediaCmdNotify * pCmdNotify){

APP_CLASS * pMe = (APP_CLASS*) pUser;

switch(pCmdNotify->nStatus)

{

case MM_STATUS_FRAME:

{

AEEDeviceInfo di;

IBitmap* frameBuf;

IMEDIA_GetFrame(pMe->pIMediaSVG, &frameBuf);

ISHELL_GetDeviceInfo(pMe->a.m_pIShell, &di);

IDISPLAY_BitBlt(pme->m_pIDisplay,0,0,di.cxScreen,di.cyScreen, frameBuf,0,O,AEE_RO_C0PY );

IDISPLAY_UpdateEx(pMe->a.m_pIDisplay, FALSE);

break;

}

}

return;

}

对于SVG中的交互事件,在应用中要做相应的消息处理:

case EVT_KEY:

switch(wParam)

{

case AVK_DOWN:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_NEXT);

break;

case AVK_UP:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_PREVIOUS);

break;

case AVK_SELECT:

nErr=IMEDIASVG_Focus(pme->pIMediaSVG,MM_SVG_FOCUS_EVENT_ACTIVATE);

break;

case AVK_END:

nErr = IMEDIA_Stop(pMe->pIMediaSVG);

break;

}

在手机上测试支持SVG应用的时候,要注意手机可能不支持SVG的压缩状态。

分享到:
评论

相关推荐

    brew开发超级全的资料、文档

    目录:(BREW 初级开发者 教程):第1章 BREW技术特点与发展趋势第2章 BREW SDK简介 第3章 BREW开发基础第4章 BREW手机简介 第5章 ISHELL第6章 IDISPLAY使用简介 第7章 ISTATIC第8章 IMENUCTL 第9章 IImage第10章 ...

    BREW高阶技术培训资料及code

    BREW高阶技术培训资料及code 第1章 BREW平台与演进.pdf 第2章 BREW3.1图像处理高级编程.pdf 第3章 BREW多媒体接口.pdf 第4章 IVocoder接口介绍.pdf 第5章 ICamera接口.pdf 第6章 BREW 常用接口介绍.pdf 第7章 BREW ...

    brew培训文档, brew教程

    第1章BREW平台及演进 第2章BREW3.1图像处理高级编程 第3章BREW多媒体接口 第4章IVocoder接口 第5章ICamera接口 第6章常用接口介绍 第7章BREW 3.1 文件系统 第8章BREW 3.1 SMS新接口使用方法 第9章BREW 语音呼叫业务 ...

    BREW高阶技术培训资料及代码

    Brew高阶技术培训资料及代码 第1章 BREW平台与演进.pdf 第2章 BREW3.1图像处理高级编程.pdf 第3章 BREW多媒体接口.pdf 第4章 IVocoder接口介绍.pdf 第5章 ICamera接口.pdf 第6章 BREW 常用接口介绍.pdf 第7章 BREW ...

    BREW_Conference_2006_uione_in_netshell

    - **组成**:uiOne SDK(软件开发包)帮助开发者将UI开发分解为可管理的部分,简化定制与修改过程。 - **工具支持**:提供用于创建定制UI的作者工具,包括开发、调试和UI生产过程管理能力。 - **必要组件**:包含...

    BREW手机游戏闪屏

    在实现技术方面,BREW(Binary Runtime Environment for Wireless)是一种专为移动设备开发的应用程序平台。在BREW平台上创建Logo闪屏,开发者可能需要掌握以下技能: 1. **图形设计工具**:如Adobe Photoshop或...

    compass-svg-polyfill:罗盘插件,可为新的浏览器提供SVG背景图像,并为旧的浏览器提供PNG后备

    指南针SVG填充 指南针插件,可为新的浏览器提供SVG背景图像,并为旧的浏览器提供PNG后备功能。 项目详情 用例 SVG非常好,因为它们是矢量格式,但是某些浏览器不支持它们。 该脚本可自动将SVG转换为PNG,并为您提供...

    brewUI设计源码

    `brewUI设计源码`是针对BREW应用开发的一个用户界面设计项目,它包含了源代码,使得开发者可以深入了解UI的设计和实现过程。BREW(Binary Runtime Environment for Wireless)是由高通公司开发的一种操作系统,主要...

    mobius:从COVID-19 Google社区移动报告中提取数据的脚本

    mobius-移动报告图形提取器 请阅读:截至2020年4月16日,Google已发布的数据。 以后将不会维护此工具。 用于从任何(182)中提取每个图形到逗号分隔值(CSV)文件中。 该代码在2020年4月3日(星期五)发布的COVID-...

    为Graphviz定制的Makefile

    在这个特定的Makefile——`dot.mk`中,开发者已经预设了一些针对Graphviz的规则,以便于处理dot文件并生成不同格式的图像。 首先,我们需要了解Makefile的基本结构。一个Makefile通常包含目标(target)和依赖项...

    glew-2.1.0.tgz

    The code generation workflow is a complex brew of gnu make, perl and python, that works best on Linux or Mac. For most end-users of GLEW the official releases are the best choice, with first class ...

    高通处理器信息(S1-S4)

    S4系列处理器通常还包含了软解2D图形功能,支持BREW 2D和SVG Tiny 1.2等软件技术。 从S1到S4,高通处理器的制程技术从65nm过渡到45nm,这对提升处理速度和降低能耗都起到了积极作用。随着技术的进步,高通处理器的...

    Python库 | graphviz-erd-0.0.0rc0.tar.gz

    在Python的开发世界中,库是开发者的重要工具,它们提供了丰富的功能,使得编程工作更为高效便捷。今天我们要深入探讨的是一个名为`graphviz-erd`的Python库,它与数据建模和可视化密切相关。`graphviz-erd`是基于...

    高通snapdragon系列芯片

    高通Snapdragon系列芯片是高通公司推出的一系列高性能移动设备处理器,广泛应用于智能手机、平板电脑等移动终端。本文将详细介绍从Snapdragon S1到S4这一时期的代表性处理器及其特性。 ### Snapdragon S1处理器系列...

    aws-security-viz:可视化您的aws安全组

    aws_key -s your_aws_secret_key -f viz.svg --color=true使用现有的security_groups.json(使用aws-cli创建)生成图 $ aws_security_viz -o data/security_groups.json -f viz.svg --color生成网页视图 $ aws_...

    rubygarage.github.com:该存储库包含RubyGarage的RubyRuby on Rails课程幻灯片

    $ brew install graphviz --with-freetype --with-librsvg 产生图 下一步运行以下命令: $ dot -T svg -O filename.dot 文献资料 执照 本项目是根据知识共享署名4.0国际许可证获得许可的。 请参阅或整个文档。 ...

    pdfify:使用适用于macOS的自动脚本将SVG转换为PDF

    在Finder中,选择要转换的svg,右键单击,然后选择“ Pdfify”。 完美转换由Figma导出的SVG用于iOS项目。 内部使用rsvg-convert进行转换。 使用自制软件安装rsvg-convert: brew install librsvg

    使用SwiftUI构建的App Clip Code Generator macOS App-Swift开发

    App Clip Code Generator macOS应用程序,使用SwiftUI构建App Clip Code Generator macOS应用程序描述使用SwiftUI构建,支持macOS 11 Big Sur及以上导出到SVG和PNG使用自定义颜色或从Apple中选择模板自定义前景色和...

    fontcustom:从舒适的命令行生成自定义图标webfonts

    # On Macbrew tap bramstein/webfonttoolsbrew updatebrew install woff2brew install fontforge --with-pythonbrew install eot-utilsgem install fontcustom# On Linuxsudo apt-get install zlib1g-dev ...

    gulp-image:使用gulp任务优化PNG,JPEG,GIF,SVG图像

    使用gulp任务优化PNG,JPEG,GIF,SVG图像。 安装 $ npm install --save-dev gulp-image 外部倾向 在macOS上brew install libjpeg libpng 在Ubuntu上apt-get install -y libjpeg libpng npm install -g windows-...

Global site tag (gtag.js) - Google Analytics