- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
I如何用纯Cndk开发安卓应用
如何用 纯C++(ndk)开发安卓应用 ?2014-06-04 13:19 佚名 OpenG 字号:T | T如何安装安卓的开发环境以及怎么设置ndk的环境变量等在前边的文章已经有了详细的讲解,在这里我就不再说明,如果有不会安装和设置环境的,请先参考安卓环境搭建的内容。AD: WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 51CTO主办WOT全球软件技术峰会直减百元优惠活动 抢票进行中! 如何安装安卓的开发环境以及怎么设置ndk的环境变量等在前边的文章已经有了详细的讲解,在这里我就不再说明,如果有不会安装和设置环境的,请先参考安卓环境搭建的内容。好,假设以及安装好了ndk,使用纯c++开发安卓程序,下边是详细的步骤与说明:1.编写入口函数android_main为入口函数,和C++中的main函数是一样的。这里创建CELLAndroidApp的对象,直接调用main函数。void?android_main(struct?android_app*?state) ?{ ??CELLAndroidApp?app(state); ???app.main(0,0); ?} ?说明:其中的?CELLAndroidApp是我们设计的一个图形绘制类,稍后将对其做详细说明2.绘制类的实现说明2.1类的成员说明protected: ??EGLConfig?_config; ??EGLSurface?_surface; ??EGLContext?_context; ??EGLDisplay?_display; ??android_app*?????_app; ??int?_width; ??int?_height;?部分参数说明:_surface:用于绘制图形,相当于windows绘图中的位图_context:可以看做是opengl对象_display:用于绘图的设备上下文,类似于windows绘图中的dc2.2 构造函数说明CELLAndroidApp(android_app*?app):_app(app) ??{ ??_surface????=????0; ??_context????=????0;?_display????=????0; ??_width????????=????64; ??_height????????=????48; ??app-userData?=this;?//用户数据 ??app-onAppCmd?=handle_cmd;?//窗口的创建销毁等 ??app-onInputEvent?=handle_input;?//回调函数 ??}?值得注意的是,这里的app中的userData,传入用户数据,这里直接传入this,onAppCmd传入的handle_cmd回调函数,onInputEvent传入的事handle_input回调函数2.3 类中函数main()说明virtual?void?main(int?argc,char**?argv) ??{ ??int?ident; ??int?events; ??android_poll_source*?source; ???while?(true) ??{?while?((ident?=?ALooper_pollAll(0,?NULL,?events,?(void**)source))?=?0)?{ ??if?(source?!=?NULL) ??source-process(_app,?source);?//有触摸事件,调用input函数,相当于dispatchmessage ???if?(_app-destroyRequested?!=?0) ??return; ??} ??render(); ??} ??}?其中的android_poll_source相当于windows中的消息队列,用于存放消息,这个函数中模拟了windows中的消息机制。ALooper_pollAll()函数,用于获取消息。值得注意的是第一个参数,如果第一个参数传入0,则不等待,调用后直接返回,类似于windows消息机制中的pickMessage()函数,如果传入-1,则类似于windows消息机制中的SendMessage()函数。 返回值:如果返回值大于大于等于0表示获取到数据,如果为-1则表示失败,未获取到数据。其中发source如果不为空,则表示有触摸事件,则调用process()函数,相当于windows中调用dispatchMessage()函数。最后,调用render()函数,绘制图形。2.4 初始化设备函数initDevice()virtual?void?initDevice() ??{ ??const?EGLint?attribs[]?= ??{ ??EGL_S
文档评论(0)