OpenSource上开了几门关于Android的课程,考虑到公司的开发平台可能在4月份开始系统迁移到Android平台,打算系统学习下Android开发技术。
资源:
课程
Programming Mobile Applications for Android Handheld Systems
参考代码: android系统2.3源码.rar (infoxa网站下载)
一: GUI系统构成
一个GUI系统通常包括下面几个方面:
1> 用户交互界面描述
问题:
View、Layerout,控件,Glyph,以及它们之间如何组合
IDE如何支持?
如何开发自定义控件?
是否支持动态生成描述文件?
如何为特定像素设备开发像素级GUI设计?
2> 文字/字体,图片,几何描画(Canvas)支持
问题:
支持哪些字库?
支持哪些文字编码? 编码转换采用什么库?iconv吗? 性能如何?
如何开发多国语言版本?能动态切换语言吗?
图片格式支持哪些? 采用什么库解码? 性能如何?
Canvas支持哪些接口?
3> 事件处理(按键,触摸,系统,用户自定义)
问题:
事件处理流程?
是否支持拦截事件,只让当前app接收?
4> 如何与linux底层的FrameBuffer交互 (Client/Server? Window管理?脏矩阵如何计算?)
问题:
从描画到linux的FrameBuffer经过哪些模块?
需要多少次bitblt?
有办法直接映射到底层linux的FrameBuffer吗?
5> 生命周期
多个Activity之间如何切换?
什么时候退出?
有办法访问linux下进程信息吗?如何强制干掉其他应用程序?
6> 权限管理
如何控制资源的访问权限?
能动态切换角色吗?
如何切换到root?
学习任何一个GUI系统必然要搞清楚以上方面。
带着上面的问题开始学习之旅。