一双鞋,刚买的时候,蹭上一点灰我都要弯下来擦干净,穿久之后,即使被人踩一脚,我也很少低头.人大抵都是如此,不论对物,还是对情,最初,她皱一下眉你都心疼,到后来,她掉眼泪你也不大紧张了.

第3章、解析Hello,world!知其然,更要知其所以然

  在我们通往成功的路上,可能会有恶劣的天气,泥泞的路,但也会有美丽的花园,让你迷恋其中,有时候不见得恶劣环境会迟缓你的进程,美丽的花园也可能会把你引向歧路,始终不要忘记我们前进的方向……

  尽管经典之中的经典Hello,world!已经悄然运行在我们的手机上了,但如果现在让你告诉别人你会Android开发,估计你自己都心虚,让我们一起再会Hello,world!项目,揭开庐山真面目。

  第一次在Eclipse中看Android项目工作区估计眼都花了,头都晕了,你一定会想:这么复杂!   但事实上,可能会比你想得简单,而且我们采取循序渐进方式,你很快就会掌握的。

一、Android项目工作区概览

  

  新建一个Android项目,Eclipse会自动帮我们建立诸多文件,我们看一下:

  其中:   第①部分:表示Java源程序;   第②部分:代表系统资源ID,类似于C语言的*.h文件,请千万不要手工修改R.java文件;   第③部分:Android4.2表示当前SDK是4.2,是目前最新版本;   第④部分:表示资源文件,其中layout布局你可以认为就是界面;   第⑤部分:每一个Android项目都包含一个清单(Manifest)文件--AndroidManifest.xml,它存储在项目层次中的最底层。清单可以定义应用程序及其组件的结构和元数据。   如果你想了解更多AndroidManifest.xml,请单击了解更多>>  

  Android项目中主要文件及文件夹的作用:   (1)src:存放所有的*.java源程序。   (2)gen:为ADT插件自动生成的代码文件保存路径,其中的R.java文件将保存所有的资源ID。   (3)Android 4.2:表示现在使用的Android SDK的版本是4.2。   (4)assets:可以存放项目中一些较大的资源文件,如图片、音乐、字体等。   (5)res:可以存放项目中所有的资源文件,如图片(*.png、*.jpg)、网页(*.html)、文本等。   (6)res\drawable-hdpi:保存高分辨率图片资源。   (7)res\drawable-ldpi:保存低分辨率图片资源。   (8)res\drawable-mdpi:保存中等分辨率图片资源。   (9)res\layout:存放所有布局文件,主要是用于排列不同的显示组件,在Android程序要读取此配置。   (10)res\values:存放一些资源文件信息,用于读取文本资源,在文件夹中有一些约定的文件名称。(具体内容待以后详解)   (11)res\raw:自定义的一些原生文件所在目录,如音乐、视频等文件格式。   (12)res\xml:用户自定义的XML文件,所有的文件在程序运行时编译到应用程序中。   (13)res\anim:用于定义动画对象。   (14)activity_main:配置所有的控件。   (15)R.java:此文件为自动生成并自动维护的,用户添加的控件会自动在此文件中生成一个唯一的ID,以供程序使用。   (16)AndroidManifest.xml:主要配置文件,用于配置各个组件或一些访问权限等。   总之,看着真的够复杂,你先有个印象就可以了。至少,你应该知道源文件是放在src文件夹;布局文件在res/layout文件夹,其他以后了解也ok。

二、Android项目分析

  1、布局文件(res\layout\activity_main.xml)   双击“res\layout\activity_main.xml”打开布局文件。注意①代表布局文件图形界面;②代表布局文件代码界面。

         

  

  Android App应用程序类似于.net的Winform程序,其中①和②相当于标题栏,①为标题栏的图标,②为标题;③代表标签<TextViw>,类似于众多程序的Label。

  

  我们再来看一下代码:

TextPrint
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. tools:context=".MainActivity" >
  6.   <TextView
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:layout_centerHorizontal="true"
  10. android:layout_centerVertical="true"
  11. android:text="@string/hello_world" />
  12. t;/RelativeLayout>

  希望你在探讨本段代码之前,至少至少要有XML文件的概念,如果没有请了解这后再来继续学习。

  本段代码包含了两个重要标签:<RelativeLayout>和<TextView>,<RelativeLayout>代表线性布局管理器;<TextView>代表标签组件。其它的皆为两个标签的属性。

  我们着重来看一下:android:text="@string/hello_world",我们的运行结果是“Hello world!”而不是“hello_world”!

  Why?

2、strings文本资源文件(res\values\strings.xml)

  双击“res\values\strings.xml”打开文本资源文件。与布局文件一样:①代表文本资源图形界面;②代表文本资源代码界面。

  

  

  

  我们打开文本资源strings.xml文件之后,当我们看到:

     <string name="hello_world">Hello world!</string>

  前面的疑虑应该顿消,原来如此啊!hello_world是文本资源文件中的一个标签而已,其真正的内容是“Hello world!”。

  你可以通过图形界面或者字符界面添加一个字符串资源,究竟你选择哪种,随你高兴!

3、R.java文件(gen/com.genwoxue.hello/R.java)

  双击“gen/com.genwoxue.hello/R.java”打开资源ID文件。

  

  R.java资源文件保存所有资源的ID,譬如前面所讲的hello_world,在这里就是一个整数0x7f040001而已。

  如果你感觉这个文件很奇怪也很正常,除非你曾经学习或者写过C for windows应用程序就早已习以为常了。

  这个文件你最好只是看看,不要动它!!!

4、AndroidManifest.xml文件

  双击“AndroidManifest.xml”项目配置文件。

  

  所有的Activity程序都在AndroidManifest.xml文件中进行注册,故该文件是整个Android项目的核心配置文件。

   在<application>节点中配置的android:icon="@drawable/ic_launcher",表示引用 drawable(drawable-hdpi、drawable-ldpi、drawable-mdpi三个文件夹中导入)资源配置的图标,引入图标的 名称为ic_launcher。现在你可以更换应用程序图标了,你知道了它在哪!

   在<application>节点中配置的android:label="@string/app_name",表示此应用程序的标签名称 从strings.xml文件中读取,内容为app_name对应的内容。现在你也可以更换应用程序标题了,你知道了它在哪!

  当然,你还可以更改Activity的标题,什么是Activity?

  Activity就是一个活动的窗体,一个项目应用程序可以包含多个Activity。

5、MainActivity.java(src/com.genwoxue.hello/MainActivity.java)

  双击“src/com.genwoxue.hello/MainActivity.java”程序文件。

  

  本程序是Android整个项目的主程序,Activity是项目的基本组成部分。

  MainActivity继承Activity类,onCreate()方法是启动Activity地默认调用的方法。

  super.onCreate(savedInstanceState):调用父类的onCreate()方法;

  setContentView(R.layout.activity_main):调用布局文件。

转载于:https://www.cnblogs.com/love-in-paradise/p/3390497.html

如果你还不明白Hello,World!相关推荐

  1. Spring核心思想,IoC与DI详解(如果还不明白,放弃java吧)

    1.IoC是什么?IoC(Inversion of Control)控制反转,IoC是一种新的Java编程模式,目前很多轻量级容器都在广泛使用的模式.2.IoC解决了什么问题?在IoC出现以前,组件之 ...

  2. 如果你还记得我[转载]

    这是我在[飞雪连天]博客中看到的一篇文章,文章不错,借用一下. 最后一次见到方强是在他家搬离村庄的那天早上. 那天早上,我和母亲从菜地拔菜回来,还在路上,我就听见村子里的人跟母亲说,庆文嫂家要搬到市里 ...

  3. 如果你还没入职,那么你必须看我的这个入职vlog[教你快速成长为职业人]

    首先,这篇文章是写给那些马上要步入职场或者还没步入职场的小白的. 我写这篇文章的目的,不会太多的去给你灌输离大家很遥远的什么职业规划啊一类的,我会告诉大家怎么能快速的适应环境,怎么能快速发挥自己价值, ...

  4. TensorRT详细入门指北,如果你还不了解TensorRT,过来看看吧

    首发于TensorRT详细入门指北,如果你还不了解TensorRT,过来看看吧!,最新回复以及交流请看这里~ 推荐一个深蓝学院的CUDA课程,TensorRT_Tutorial的作者伟哥讲解的,质量很 ...

  5. 如果你还在寻找完美的海报字体, 你很幸运看这里!

    一个优秀的海报字体有能力把单调的海报设计变成一个引人注目的设计. 如果你还在寻找完美的海报字体, 你很幸运. 优图网收集了一套梦幻般的海报字体,将是帮助你完美的任何海报设计重要工具. 这些字体很大胆, ...

  6. 如果你还在找项目,说明你还需要走的路很多

    如果你还在找项目,说明你还需要走的路很多,路上难免会遇到牛鬼蛇神. pian子多,pian钱项目多,可是如果你有赚钱的欲望,这些槛必须要过, pian子不应该是你向上生长的阻力. 预估风险,任何项目或 ...

  7. 还不明白可空类型原理? 我可要挖到底了

    一:背景 1. 讲故事 做好自媒体到现在有一个月了,关注我的兄弟应该知道我产出了不少文章,号里的粉丝也多起来了,我也尽最大努力做到有问必回,现在是基础的.高深的问题都接踵而来,可我也只是一只小菜鸟,想 ...

  8. 如果你还没冒犯过别人,说明你可能还没做过一件重要的事

    有意义的成就,往往会打扰到你周围的世界. 你在减肥吗?你应该为你自已的身体而开心!你在救助非洲的孩子?你应该救助你自己的国家!治愈了癌症?是什么让你坚持到最后? [你解决了世界贫困?很好.请问我现在该 ...

  9. 喜爱3D游戏动漫建模的你,如果你还不知道这些技巧,真是白学了

    首先3D建模师主要根据建模软件的用途来分类,可分为为游戏建模.影视建模和工业建模三种.游戏建模主要是负责游戏里场景.角色.道具模型的制作.动漫影视建模主要是负责影视中角色.场景的模型搭建以及特效制作. ...

最新文章

  1. 分享13个Spring Boot 优质开源项目!商城,ERP,管理系统
  2. repo入门和基本用法
  3. java虚拟机启动参数分类详解
  4. Linux命令TOP TEN
  5. I - Triple HDU - 5517
  6. 在Data Lake Analytics中使用视图 1
  7. AI 告别炒作,Java 0 增长,2021 技术路在何方?
  8. Servlet文件下载
  9. linux 安装pyaudio
  10. Mac下用命令行打开pdf文件
  11. [python3]读取docx每个段落下的table数据
  12. 优秀的Kafka架构设计
  13. MDK_EventRecorder
  14. echarts 圆环图
  15. Michael Kors 完成了对 Versace 的收购,集团还正式改名成了 Capri
  16. 【SQL开发实战技巧】系列(八):聊聊如何插入数据时比约束更灵活的限制数据插入以及怎么一个insert语句同时插入多张表
  17. java后端开发流程总结
  18. Pandas 对数值进行分箱操作的4种方法总结对比
  19. 公司企业所得税高如何有效做好税收筹划
  20. FRM计算器使用流程你知道吗?

热门文章

  1. datetime类型怎么输入_数据库之mysql的基础类型
  2. keil流水灯c语言程序两个一起亮,Keil单片机点亮一个灯及循环流水灯三种实现方法详解...
  3. oracle客观题题库,oralce题库及答案.doc
  4. 两台电脑怎么共享_怎么在电脑上创建共享文件(必须是在同一个网段)
  5. springboot 扫描文件夹_Spring Boot学习07_自定义starter
  6. ubuntu下使用yocto制作龙芯文件系统
  7. 设置matlab默认工作路径
  8. 用Scholar one 投稿过程
  9. iOS:Xcode7下创建 .a静态库 和 .framework静态库
  10. Spark MLib 数据类型