Android与MFC编程的一些漫谈
前一段时间研究了一下MFC与Android,刚入门了基本的东西,对于深入理解还是差很多的。
先来说说最近的理解吧(博客主要还是记录自己的东西,防止以后忘记了,也顺别作为万千网名中的一个,为他人贡献一点点小福利):
GUI编程中的一些概念:控件,资源,布局,等等。
- 布局方式:
MFC 中布局是通过拖拽控件完成,这个相当于Android中的RelativeLayout布局,这个是很自由的。而在Android开发中,布局文件时通过一个.xml文件实现配置,也可以通过拖放完成。布局方式有很多种,比如LinearLayout,GridLayout,等等。这个与原生态Java编程十分类似。
- 资源管理:
对于资源的管理,两者也采用类似的办法。
MFC在资源管理器中对每个控件分配一个ID(eg:IDC_CONTROLNAME,IDB_Bitmap1...),通过CWnd的类方法获取对应ID的窗体指针:
CButton *btn = (CButton *)GetDlgItem(IDC_BUTTON1);
在Android中,控件是通过.xml文件配置并在gen文件夹下的class R中生成相应的ID资源,采用同样的方法,也可以获取相关的资源的引用(Java 中没有指针的概念)
Button btn =(Button)findViewById(R.id.button1);
- 类的继承方式
MFC中的类都是继承CWnd基类,CWnd提供了窗体类的基本操作。Android类中继承了View类,这个也是UI的基类,如图所示:
这里面有很多类比的方式可以去借鉴。对于MFC和Android(甚至说MFC和java)这两个不相干的,还是能找到相同点的去学习。
- 绘图方法
绘图的基本要素是:画板,画笔,颜色,辅助工具等等。
MFC绘图采用GDI方式(往后支持GDI+),基本思路是获取某个控件的设备描述符句柄,然后通过CPen,CBrush,CFont等一些辅助的类控制绘图的效果。设备描述符(DC)中包含了画板(Client客户区),CPen 等辅助类包括了颜色画笔等,通过这些工具,便能完成绘图。MFC中:CDC,CClientDC,CWindowDC,CPaintDC。。。
Android中的画板为View类,View提供了绘图的区域。Canvas作为画笔,控制了基本绘图的信息。Paint类作为辅助信息,提供诸如对其,绘图方式等辅助信息;Color类则是Android绘图的调色板。通过这三个类,完成了基本的绘图方式。
比较两者的绘图,我们也能很清楚的理解基本要素是如何存在的。之后的GDI+通过Graphic类,实现了画布类,这个有点类似于Canvas。个人觉得MFC的GDI概念理解起来比较麻烦。
结:这也算是我的处女作,为了是给自己博客之路开个头。写的不好的还望多多指教。