Android 开发札记初级(五)重要文件解析

之前我们创建了一个 Hello World 项目,根据前几节的了解,gradle 和系统已经自动帮我们生成了项目的文件,现在让我们来看看一些主要文件的代码和作用。

app | src | AndroidManifest.xml

这个是我们 Android 项目的配置文件,我们在应用程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。( 注意:与 eclipse 不同的是,项目中的versionCodeversionName以及对程序最低兼容和目标版本的控制不再是在这里,而是在项目的build.gradle里面)




    
        
            
                
                
            
        
    


  • 每个 XML 文档都由 XML 序言开始,在前面的代码中的第一行便是 XML序言,这一行代码会告诉解析器和浏览器,这个文件应该按照 1.0 版本的 XML 规则进行解析,且文件采用 utf-8 的编码格式。
  • manifest xmlns:android="http://schemas.android.com/apk/res/android" 定义了我们需要使用的架构来源
  • package="com.example.newam.helloworld" 定义了我们程序所在的 java 包,应用包名是应用的唯一标识。
  • 标签里面的属性如同字面意思,是对R.java文件里各种资源的引用。
  • 里面的两行代码把 HelloWorldActivity 注册为该项目的主要活动活动。
  • .HelloWorldActivity.的意思是com.example.newam.helloworld的缩写。因为在标签里面已经通过package属性指定了程序的包名。使用android:label指定活动的标题栏的内容,标题栏显示在活动的最顶部,给主活动指定的 label 还会成为 launcher 中应用程序的名称。

main | res | layout | hello_world_layout.xml




    

    

  • xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    这两行可以理解为语法判断器,按alt+/ 作为提示,提示该输入什么不该输入什么,以及代码对错,不用联网。

  • android:layout_width="match_parent"
    android:layout_height="match_parent"
    这两行代码是控制组件的宽度和高度,有三个属性可以选择:wrap_content表示当前元素的高度仅需刚好包含路面的内容就行、fill_parentmatch_parent作用一样,用于填充父容器水平方向的空间,即拉伸。

  • tools:context="com.example.newam.helloworld.HelloWorldActivity"不会被打包进 APK,它说明当前的 layout 渲染的上下文是 hello_world_layout.xml里面activity android:name所指定的那个activity,如果这个 activity 在hello_world_layout.xml里面设置了某个 theme ,那么 ADT 的Layout Editor 会在 Design 可视化视图中即时渲染对应 theme 的背景控件,描述了一种所见即所得的效果。

  • 是安卓系统提供的一个控件,用于在布局中显示文字,android:text为这个控件设置文本,因为 字符串的定义都是使用键值对的形式,引用了string.xml资源里面的hello_world键,它对应了一个Hello World!的值,所以最终能显示出来我们看到的文字 。


main | java | com | username | helloworld | HelloWorldActivity.java

package com.example.newam.helloworld;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;


public class HelloWorldActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        //代码提示快捷键:Ctrl+Alt+空格键选中activity_main可以打开到指定的R.java文件中。
        //onCreate方法是一个活动被创建时必定被执行的方法
        super.onCreate(savedInstanceState);
        //这个方法给当前的活动引入了一个叫做hello_world_layout布局
        setContentView(R.layout.hello_world_layout);
        //Log是安卓的工具类(android.util.Log)提供了如下几个方法供我们打印日志,如下在logcat中只打印debug信息
        Log.d("HelloWorldActivity","onCreate execute");
    }
}
  • 每个 activity 的注册声明必须得放在 AndroidManifest.xml 这个标签里面,不然会报错。我们通过这个标签进行注册,并使用 android:name 这个属性来指定要注册 activity 的名称。
  • 如果要隐藏标题栏,对于Activity,得把requestWindowFeature(Window.FEATURE_NO_TITLE);添加到 onCreate();方法里面;而对于 AppCompatActivity,使用getSupportActionBar().hide();即可。
  • 调用一个 setContentViews(); 方法来给当前的活动加载一个布局,而在该方法中我们一般会传入一个 layout 的 id,刚刚创建的布局的 id 现在已经添加到 R 文件中了,这里的 R 文件是 app| build generated | source | r | debug| com下的 R.java 文件,而 External Libraries| AndroidSDK | res,也是一个 R 文件,不能混淆了。

推门看到覆满天际细碎的云絮。西边树丛后的晚霞像野火余烬被风吹过,骤然亮起;然后光色急遽变幻,冷凝,沉落,漫天云纹随之潜入夜色。这大地之上的璀然告别发生在短短的十分钟里,突然一阵惶然失措,让人什么都来不及想、来不及说。

你可能感兴趣的:(Android 开发札记初级(五)重要文件解析)