一、Android项目结构
常用的两种项目结构:Android模式和Project模式
1.Android模式
(1)manifests:显示Android全局描述文件
AndroidManifest.xml文件:
1 <?xml version="1.0" encoding="utf-8"?> 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android" 3 package="com.example.a86147.helloworld"> 4 5 <application 6 android:allowBackup="true" 7 android:icon="@mipmap/ic_launcher" 8 android:label="@string/app_name" 9 android:supportsRtl="true" 10 android:theme="@style/AppTheme"> 11 <activity android:name=".HelloWorldActivity"> 12 <intent-filter> 13 <action android:name="android.intent.action.MAIN" /> 14 15 <category android:name="android.intent.category.LAUNCHER" /> 16 </intent-filter> 17 </activity> 18 </application> 19 20 </manifest>
<application </application>——配置整个应用的属性
<activity></activity>——配置应用中的activity
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter> ——将当前activity设为应用入口
(2)java:显示Android应用中的包以及java源文件
应用的包
1 package com.example.a86147.helloworld; 2 3 import android.support.v7.app.AppCompatActivity; 4 import android.os.Bundle; 5 6 public class HelloWorldActivity extends AppCompatActivity { 7 8 @Override 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 setContentView(R.layout.hello_world_layout); 12 } 13 }
注意:
-
Android中一个activity就是一个java类
-
R文件是自动生成的,并且不能修改
-
R文件生成失败会报错
解决方法:Android Studio菜单项中点击Build—Clean Project即可解决
进行单元测试
(3)res:显示资源文件,例如布局文件、图片资源文件
drawable目录:存放位图文件(PNG、JPEG或者GIF)、9Patch图片、Shape Drawable对象等XML资源文件
layout目录:存储布局文件
mipmap目录:存放应用的启动图标,例如:mipmap-mdpi、mipmap-hdpi、mipmap-xhdpi、mipmap-xxhdpi、mipmap-xxxhdpi
values目录:保存字符串、样式、尺寸等资源
Gradle Scripts:与源码无关
注意:
-
布局文件——控制窗口显示哪些内容
-
9-Patch图片和Shape资源文件只能放在drawable目录中
-
需要适应屏幕分辨率的图片一般放在mipmap目录中,可以提高显示性能,占用内存更少
2.Project模式
除了app目录之外,大多数文件和目录都是自动生成的,并不需要修改。
app目录:
(1)build:包含一些编译时自动生成的文件。
(2)libs:需要将第三方jar包放在此目录下。这些jar包会自动添加到构建路径里。
(3)androidTest:编写Android Test测试用例。
(4)java:放置java代码
(5)res:此目录存放使用到的所有图片、布局、字符串等资源。其中图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下。
(6)AndroidManifest.xml:是整个Android项目的配置文件,在程序中定义的所以四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。
(7)test:编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。
(8).gitignore:这个文件用于将app模块内的指定的目录或文件排除在版本控制之外,作用和外层的.gitignore文件类似。
(9)app.iml:IntelliJ IDEA项目自动生成的文件。
(10)build.gradle:是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配
(11)proguard-rules.pro:这个文件用于指定项目代码的混淆规则,当代码开发完成后打成安装包文件,如果不希望代码被别人破解,通常会将代码混淆,从而让破解者难以阅读。
二、项目分析
1.在AndroidManifest.xml文件中的代码对HelloWorldActivity这个活动进行注册。
1 <activity android:name=".HelloWorldActivity"> 2 <intent-filter> 3 <action android:name="android.intent.action.MAIN" /> 4 <category android:name="android.intent.category.LAUNCHER" /> 5 </intent-filter> 6 </activity>
表示HelloWorldActivity是这个项目的主活动。也就是说,手机上点击应用图标,首先启动这个活动。
2.HelloWorldActivity:
1 public class HelloWorldActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.hello_world_layout); 7 } 8 }
-
项目中的所有活动必须继承Activity或者它的子类才能拥有活动的特性(AppCompatActivity是Activity的子类)。
-
onCreate()方法:一个活动被创建时必定要执行的方法。
-
Android程序设计提倡逻辑与视图分离,一般在布局文件中编写界面,然后在活动中引入进来。例如调用setContentView()方法,给当前的活动引入了一个hello_world_layout布局。
3.res/layout下的布局文件:
1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:id="@+id/hello_world_layout" 4 android:layout_width="match_parent" 5 android:layout_height="match_parent" 6 android:paddingBottom="@dimen/activity_vertical_margin" 7 android:paddingLeft="@dimen/activity_horizontal_margin" 8 android:paddingRight="@dimen/activity_horizontal_margin" 9 android:paddingTop="@dimen/activity_vertical_margin" 10 tools:context="com.example.a86147.helloworld.HelloWorldActivity"> 11 12 <TextView 13 android:layout_width="wrap_content" 14 android:layout_height="wrap_content" 15 android:text="Hello World!" /> 16 </RelativeLayout>
TextView是系统提供的一个控件,用于在布局中显示文字。可以看到Hello World!字样。