程序的启动入口
简单的目录结构如图
其中 AndroidManifest.xml
文件是android项目配置文件。 见下图:
上方xml的activity
标签表示对Activity进行注册。 没有在AndroidManifest.xml
注册的活动是不能使用的。
其中intent-filter的两行代码是很重要的。
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
表示HelloWorldActivity是这个项目的主活动。在手机上点击应用图标,首先启动的就是这个活动。
.HelloWorldActivity 其实是 com.tyrad.helloworld.FirstActivity 的缩写而已. 由于最外层的标签中已经通过 package 属性指定了程序的包名,因此在注册活动时 这一部分就可以省略了,直接使用.FirstActivity 就足够了。
关于activity
HelloWorldActivity最终是继承自 Activity。Activity是Android系统提供的一个活动基类。
我们在项目中的所有活动必须继承它才能有活动的特性。
onCreate()
是activity创建时必须要执行的方法。
setContentView()
给当前的活动加载一个布局,而在该方法中,我们一般都会传入一个布局文件的 id 。
项目中添加的任何资源都会在 R 文件中生成一个相应的资源 id,因此 我们创建布局的 id 现在应该是已经添加到 R 文件中了。 只需要调用 R.layout.name_layout 就可以得到布局的id了。
如何引用资源
res目录是app的资源目录。
- drawable 放图片(多个drawable开头的文件夹主要是为了程序能兼容更多设备)
- values 放字符串
- layout 放布局文件
比如引用strings.xml的 ccc_name 的字符串
<resources>
<string name="ccc_name">helloAndroid</string>
</resources>
可以有两种引用方式:
- 在代码中通过
R.string.ccc_name
- 在XML中通过
@string/ccc_name
如果引用图片资源就可以将string替换成 drawable ,其他类型资源依次类推。
layout.xml
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Button"
android:id="@+id/button_1"/>
-
android:id
android:id 是给当前的元素定义一个唯一标识符,之后可以在代码中对这个元素进行操作。
@+id/button_1 这种语法你可能感到陌生,但如果把加号去掉,变成@id/button_1,这你就会 觉得有些熟悉了吧,这不就是在 XML 中引用资源的语法吗,只不过是把 string 替换成了 id。 是的,如果你需要在 XML 中引用一个 id,就使用@id/id_name 这种语法,而如果你需要 在XML中定义一个id,则要使用@+id/id_name 这种语法。
-
android:layout_width
android:layout_width 指定了当前元素的宽度,这里使用 match_parent 表示让当前元素和父元素一样宽。
android:layout_height 指定了当前元素的高度,这里使用 wrap_content,表示当前元素 的高度只要能刚好包含里面的内容就行。
-
android:text
指定了元素中显示的文字内容。
日志工作的使用
Log.v()
这个方法用于打印那些最为琐碎的,意义最小的日志信息。对应级别 verbose, 是 Android 日志里面级别最低的一种。
Log.d()
这个方法用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助 的。对应级别 debug,比 verbose 高一级。
Log.i()
这个方法用于打印一些比较重要的数据,这些数据应该是你非常想看到的,可以帮 你分析用户行为的那种。对应级别 info,比 debug 高一级。
Log.w()
这个方法用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别 warn,比 info 高一级。
Log.e()
这个方法用于打印程序中的错误信息,比如程序进入到了 catch 语句当中。当有 错误信息打印出来的时候,一般都代表你的程序出现严重问题了,必须尽快修复。对应 级别 error,比 warn 高一级。
参考
参考书籍: 《第一行代码》