今天又有了一点新的收获,写给自己也照亮有缘人。
写程序断断续续也有七八年的时间了,原来是按照例程抄写,实现功能。有了C++的基础再去学习其他语言当然感觉更加轻松。如果抄写示例程序,编译运行都是没有问题的。出现问题的地方在于,我想在例子的基础上做相应的删减和增加就不是很顺利了。静下来想想,为什么呢?
想来可能是由于对要删减的模块和整体的联系没有理清,导致删的不够彻底。删除该功能后却有其他模块依然要使用此功能。我是学机械出身,后来主要搞FPGA。在FPGA中每个模块在编译后会有一张关系图。类比于软件就是各个活动(实体)之间的相互调用关系。直观的东西更容易理解,抽象的东西应用的更广泛。如果将app中各个UI之间的关系像FPGA中的模块一样画张图表出来,理解起来各个图标变量图片之间的关系就更容易些了。这些图片想传递的就是他们之间的关系。而那些方法其实就是信息传递的规则。
具体点,来看看Android Studio 1.0.1是如何组织类(实体的图纸,方法),资源(实体),关系(动作)这些东西的。在app文件夹下有manifests, Java, res三个文件夹。
manifest文件夹下定义了该程序的架构。
Java文件夹下的文件描述了app中所有的类。
res文件夹下分为drawalbe,layout,menu,values四个文件夹。drawalbe放置图片文件。layout是描述界面如何摆放图片文字等资源的。menu下文件描述菜单该怎么摆,长什么样。values存放了layout和menu中描述时使用到的变量或者叫字符串的名字。
我喜欢自顶而下的设计,显得层次分明,关系明朗。app的最顶端是用户需求,下面是app界面,下面分为界面的构造以及界面的动作,再下面是服务接口为上层提供数据,再往下就不用关心了。
第一个例子hello world!app界面层:layout+textview。界面实现层:在app/res/layout文件夹下建立描述layout和textview的activity_main.xml文件。实现的方法同时在app/java/unique_id_file/下建立入口类mainactivity,并实现这个界面。那么这个mainactivity如何找到对应的layout呢?通过描述layout的名字,这样两个文件就通过文件名联系了起来,完成了组装。
阅读(1543) | 评论(0) | 转发(0) |