您的位置:首页 > 移动开发 > Android开发

关于android程序编写初级逻辑思考问题

2012-12-24 17:53 671 查看
hello~大家好,如果你是android大神,请绕道而行,对于初学者,下面的文字或许对你有些启发与帮助,强烈欢迎评论讨论:

对于一个android初学者(假设你有很良好的java基础,所有的硬件软件设施已经齐备(足够配置的电脑,java环境,eclipse)),那么你最苦恼的莫过于看到android的架构界面了,密密麻麻的代码,到底哪个是干什么用的,下面给你做出解释:

个人认为android共分为以下三个架构:第一:布局规划。第二:属性安排。第三:统筹事件。

布局规划:

关于布局规划,我们在java里面就已经学习过了java GUI的有关知识,那么android的布局规划,实则比java的GUI要简单很多,在前期,你可能需要研究每一行代码代表的是什么属性值,结构值怎样的。后期再关于UI规划的时候,你直接拖拽就可以完成,譬如google上小有名气的pencil软件,你会发现自己以前花时间研究的那么多代码几个简单的动作就可以完全替代,没错,后期是这样,但是前期的研究是帮助你理解代码与架构的必须途径,任何人都不能省略这关键的一步。好吧,言归正传,当你new了一个android
project后,点开res--layout文件夹,里面有一个.xml的文件,名字的话有的是main,有的是activity_main,这无所谓,拖到eclipse桌面,你大概会看到这么一堆代码

(这张图是我编写android游戏时的截图,请勿商用)

好了,这样的话你就有一个很清楚的认识了,大家都知道,手机里面都有home键,都有一个主桌面,我们称之为home界面,在程序里面这个桌面是由home程序来维持的。而这个main.xml文件就是来设计你程序主界面的排版,说的更直白一点儿,譬如登陆界面,各种游戏的登陆界面,按钮的布局,大小,文字的格式,颜色,字体,背景色,背景亮度等等,如一般的游戏都会有:new game, exit, settings, contact us ,buy it now,诸如此类的各种按钮元件。关于上面图片的代码,有什么疑问你评论问我就好,这些布局类的代码初期是会占用我们很大的精力,但这里不再一一解释。总之,这个文件就只有一点你要确定,就是为你的程序界面整形化妆!

属性安排:

所谓属性,就是物体具有的性质与特征,那么当你在前面布局规划之后,为你的程序装上了五官以后,该如何为这些五官做实质性的优化呢?

点击res---values---strings.xml文件,你会看到这么一些代码:


没错,这就是string.xml,里面的代码无非都长着一张相同的脸,这里就是为你在之前所布局下来的元件,赋予相对应的值,你所看到的图片里面,是我为主屏幕按钮设置的名称以及按下按钮以后弹出的list的按键名称。关于这些代码的格式问题,如果你有疑问想一争高下,那你赢了,因为规矩是别人定的,这些格式那些大神们怎么规定我们就得怎么来,你只能把这些语法吞下记住,用多了就好了。一句话,strings文件就是用来让你设置所有元件的属性值的。

统筹事件:

如果说前面给你讲的是文件的功用,那是再简单不过了,接下来的核心,就是如何统筹这些事件。何为统筹这些事件?我们从以下几个方面来彻底的理解。

你可以这么想,在你为接触android之前,脑海中固有的那种的java代码的执行方式是什么?是不是编译通过后就直接执行了?然后当你面对“硕大”安卓工程的时候,完全不知道该从何看起,从哪里下手?不要着急,任何事情都有关键。现在我们看看eclipse窗口界面左侧的AndroidManifest.xml文件,不管他叫什么名字,他必须有一个Manifest.xml后缀,好了,我们把它拖到右侧的窗口,会看到类似于这样的代码:



这里就是解决你疑问的地方,安卓程序的执行就是从这里开始的。为了让你更容易理解,这里说明一下,安卓的执行机制是以activity html标签调用的,也就是说,你要想在你的程序中做任何手脚的话,都必须像图中代码所示的那种格式一样,在该文件中注册声明一个<activity>......</activity>,这样的话你的程序才会执行你的代码,不然在AVD上(虚拟机android visual device)是不会有反应的,至于该怎么注册,注册格式怎样,下面会讲。好了,既然你理解了安卓的执行机制,那么就再细化一点儿,避免你思维的误区,不是所有你设计的东西都要去注册一个activity,所谓activity,字面意思就是“活动”,就是“事件”,那么仔细想一想,既然我们一直强调android是完全基于java编写的,那么这个emphasis体现在哪儿呢?没错,每一个.java文件都是一个事件与活动,在src的文件里包含着android工程下面所有的java文件,每一个java文件的功能不尽相同,有的是程序的核心逻辑代码,有的是执行播放音乐的功能,还有的是提供虚拟键盘的功能,等等。前面讲过,我们进入了程序后,就摆脱了home界面,离开了home程序,跳到了主要布局界面,会有一堆按钮之类的东西等着你去摁,这些按钮是你在主界面,也就是layout---main.xml中布局好了的,它们不属于activity的范畴,接下来你要想让你的按钮按下后有反应,那你就必须在Manifest文件中注册啦,如上图,我注册了三个事件,一个是about,一个是prefs,还有一个是Game,为什么没有全部注册?如果你学过java就知道,在一个大的java文件中还会调用到别的java文件,这个时候就无需再声明了。声明的格式如上图,android:name=“.About”(不要漏点~~~),声明你的活动的名称,命名格式:点+java文件名称。在声明的名称下面有一个@string,很熟悉吧,没错,就是调用strings.xml文件中的属性值,这下懂了strings文件里面设定的属性值是如何传递到manifest里卖弄去了吧,就是通过注册声明的方法,程序执行以后你会发现,你在strings里设定的值或文字,如果又被选择,会原封不动的显示在程序窗口里面,在下面,我会继续解释为什么属性可以传递,其原理是什么。再此之前,再给你总结一下manifest这个文件到底可以做什么:

在AndroidManifest.xml中可以:
1.添加权限声明。比如要用到网络,添加<uses-permission android:name="android.permission.INTERNET"></uses-permission>;
2.添加新的Activity。比如增加的Home.java类,继承Activity,添加<activity android:name="Home" android:configChanges="orientation|keyboardHidden|navigation" />
3.为额外的库添加声明。比如要用到Google Map的时候,不是Android内部包,引入包后,添加<uses-library android:name="com.google.android.maps"/>
4.程序运行的最低版本声明。添加<uses-sdk android:minSdkVersion="3"></uses-sdk>
5.为自己的后台Service声明。添加<service
android:name=".MyService"
android:exported="true"
android:process=":remote" >
</service>
6.其它情况,比如加入Admob广告:添加<meta-data android:value="yourID" android:name="ADMOB_PUBLISHER_ID"/>;
广播事件:<receiver android:name="HippoCustomIntentReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="HIPPO_ON_SERVICE_001" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
还有就是修改程序ICON的时候,可以这里面修改<application android:icon="@drawable/icon" android:label="@string/app_name">

好了我们初步懂了android的执行方式了,那么到底它最根本的执行原理是什么呢?让我们点击gen---R.java,拖拽到右侧窗口会看到这些密密麻麻的东西:


我们已经知道布局文件通过@符号与值文件中的值连接起来,而布局文件是通过源代码中的setContentView(R.layout.xx)方法绑定到一起。其中的R.layout.xx就起到了@的作用。该参数的意义是:通过R文件找到layout文件中的xx布局文件。例如,要找到main.xml布局文件,其参数就是R.layout.main。

那么R文件在哪里?R文件又是怎么找到main.xml文件的呢?接下来,我们就来探究R文件。

R文件位于/gen/<package name>/R.java目录下,它就好比是一个联系薄,记录着所有可使用资源的Id,通过这些Id,我们就可以很方便地在程序中使用这些资源了。双击R.java文件,我们来看看这个Android应用的"神经中枢"的"庐山真面目",如图上图所示。

剩余的就是aapt自动生成的代码了,该类的名字就是R,其下定义了一些常量,包括:文件前面绿色的字体是由系统自动生成的注释,它的意思是:这个类是由aapt工具通过它找到的资源数据自动生成的,它不能被手动修改。aapt也就是Android Asset Packaging Tool,即Android资源打包工具。该工具一般由Eclipse调用,我们不需要主动去使用。

Drawable:图片资源,目前只包含icon,其Id为0×7f020000。

Layout:布局文件资源,目前包含main.xml,keypad,about,其Id为0×7f30002,ox7f30001,0x7f30000。

了解了R文件后,一切都已经明了,在android工程中,我们在java文件中通过findviewbyid的方法找到对应对象在R文件中的ID,也就是说找到它的地址,然后在修改对应对象的属性值。

了解了这些基本的调用逻辑,相信你对android的开发已经有了一个初步的理解,再结合实例好好感悟一下,android其实也没什么难入门的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐