上一篇代码,我们学习了Android的功能以及如何用Android Studio开发第一个安卓程序。下面就要介绍Android项目结构。为日后学习打基础。
一:Android项目结构
打开MyFristApp,可以看到如下项目目录和文件结构:
这里对app模块下的文件进行介绍。
1.manifests
其下的AndroidMainfest.xml为项目的配置信息文件:
2.java
主要是java源代码和测试代码。下面的文件是主文件:
3.res
主要是资源目录,存储所有的项目资源:
下面是文件夹的功能说明:
目录结构 | 资源类型 |
resvalues | 存放字符串,颜色,尺寸,数组,主题,类型等资源 |
reslayout | XML布局文件 |
resdrawable | 图片(bmp,png,gif,jpg等) |
resanim | XML格式的动画资源(帧动画和补间动画) |
resmipmap | 存储系统的图片资源 |
res aw | 可以存放任意类型的文件,一般比较大的文件,会在Rl类中生成资源id,封装在apk中 |
assets | 可以存放任意类型,不会被编译,与raw相比,不会在R类中生成资源id |
下面是常用的目录简介:
(1)mipmap
功能:存储系统的图片资源
可以看到出现了两个文件夹,一个是方形的图片文件存放处,一个是圆形的图片文件存放处。
后面的括号内的代表不同的分辨率,是为了使应用程序在分辨率大小不同的显示窗体上都可以顺利显示。
(2)layout
这里存放XML布局文件,就是用户界面布局文件,有一个系统自动生成的activity_main.xml文件,可以按可视化的图形设计界面显示,也可以按代码设计界面显示:
a:图形设计界面
b:代码设计界面
"android:layout_width":定义当前视图在屏幕上所占的宽度,match_parent即填埋整个宽度。
同理android:layout_height是定义当前视图在屏幕上所占的高度。
android:layout_width="wrap_content"
android:layout_height="wrap_content"
自适应大小,用于显示其全部的文字内容。
在应用程序中如果使用用户界面的组件时,则需要通过R.java文件中的R类调用。
上面都是相对布局配置。
(3)values
该目录存放参数描述文件资源。也是XML文件。都是通过R类来调用。
4.R.java目录
该文件将res目录中的资源与id编号进行映射,很方便地对资源进行引用。该文件是自动生成的,不允许用户修改。
在系统中引用资源都需要使用R类。
专业解释是:R.java会自动收录当前应用中所有的资源,并根据这些资源建立对应的ID,包括:布局资源、控件资源、String资源、Drawable资源等。可以简单的把R.java理解成是当前Android应用的资源字典。
有时候会由于操作失误造成MainActivity找不到R.java文件,这时候只需要点击如下位置即可:
5.Gradle Scripts:build.gradle为项目的gradle配置文件。
6.Android应用程序结构分析
从上面的Android应用程序可以看到,一个Android应用程序通常由Activity类程序(Java源程序)和用户界面布局XML文档组成。
逻辑控制层由Java应用程序实现,表现层由XML文档描述。
主程序和Java一样。
7.AppCompatActivity与Activity区别
我们在写源程序时,会有两个继承的父类,这两个大体上是相同的,但有些地方还是有些区别。
当使用Eclipse开发Android应用的时候,当创建项目的时候,MainActivity自动继承的是Activity,而在使用Android Studio开发Android应用的时候,创建项目时,自动继承的是AppCompatActivity。
(1)AppCompatActivity简介
AppCompatActivity是Google后来退出的Activity AS默认让我们继承它 因为他可以使用Android中的新特新 ToolBar 我平时使用的很少 如果使用toolbar需要继承AppCompatActivity。
(2)AppCompatActivity默认带标题
在继承AppCompatActivity时,界面最上面会出现一个ActionBar,
但Activity不带。
(3)AppCompatActivity和
requestWindowFeature(Window.FEATURE_NO_TITLE);
有冲突。
8.出现的问题
在运行代码时,可能会出现下面的问题:
它的含义如下:
在Android Studio3.0之后的版本解决方法如下:
结果如下: