Android Studio项目结构

来源:互联网 发布:网络在线教育 编辑:程序博客网 时间:2024/05/21 08:55

一、Android工程视图下项目结构

  1. manfests:
    • AndroidManifest.xml: APP的配置信息
  2. java:主要为源代码和测试代码
  3. res: 主要为资源目录,存储所有的项目资源
    • drawable: 存储一些xml文件,-*dpi表示存储分辨率的图片,适用于不同的屏幕
    • layout: 存储布局文件
    • mipmap:存储原生图片资源
    • values:存储app引用的一些值
      • colors.xml:存储一些color的样式
      • strings.xml:存储引用的string值
      • style.xml: 存储app需要用到的一些样式

二、project工程视图下项目结构

  1. build:系统生成的文件目录,最后生成的apk文件就在这个目录
  2. app/libs:为项目需要添加的.jar包或.so包等外接库
  3. app/src: 项目的源代码,其中androidTest为测试包,main为主要的项目目录和代码,test为单元测试代码。

三、主要文件

(1)、AndroidManifest.xml

  1. xmlns:android= : 定义了android的命名空间。
  2. package : 制定本应用内Java主程序的包名。
  3. application: 声明了每一个应用程序的组件及其属性。
  4. android:allowBackup:将程序加入到系统的备份和恢复架构中。
  5. android:icon:显而易见表示APP的图标了。
  6. android:label:许可列表。
  7. android:supportsRtl:启用各种RTLAPI来用RTL布局显示应用。
  8. android:theme:android的主题。
  9. activity:android:name表示当前的activity的名字,因为工程为MainActivity,所以这个名字就为这个,之后有新的activity的话,也需要添加才可以使用。
  10. intent-filter:包含了action,data和category三种。
    • action:只有android:name属性,常见的是android.intent.action.MAIN,表示此activity是作为应用程序的入口。
    • data:指定了希望接受的intent请求的数据URI和数据类型。
    • category:android:name属性,常见的是android.intent.category.LAUNCHER,决定应用程序是否显示在程序列表里。

(2)、build.gradle

Android Studio采用Gradle来构建项目。

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "25.0.2"    defaultConfig {        applicationId "com.example.a14784.myapplication"        minSdkVersion 24        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:25.2.0'    compile 'com.android.support.constraint:constraint-layout:1.0.2'    testCompile 'junit:junit:4.12'}
  1. 第一行应用了一个插件,一般有两种值可以选择:com.android.application表示这是一个应用程序模块,com.android.library表示这是一个库模块。应用程序可以直接运行,代码库只能依附于别的应用模块来运行。
  2. compileSdkVersion指定项目的编译版本。
  3. buildToolsVersion指定项目构建工具的版本。
  4. defaultConfig闭包对项目的细节进行配置。
  5. buildTypes闭包用于指定生成安装文件的相关配置。
  6. dependencies闭包用于指定当前项目所有的依赖关系。

四、代码流程

(1)、注册代码

文件Android-Manifest.xml,部分代码:<activity android:name=".MainActivity">    <intent-filter>        <action android:name="android.intent.action.MAIN" />        <category android:name="android.intent.category.LAUNCHER" />    </intent-filter></activity>

这段代码是对MainActivity这个活动进行注册,表示.MainActivty是这个项目的主活动,在手机上点击应用图标时,首先启动的就是这个活动。

(2)、程序入口

上面我们队MainActivity活动进行了注册,这段代码在MainActity.java中。

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }}
  1. MainActivity是继承了AppCompatActivity,这是一种向下兼容的Activity,可以将Activity各个版本的特性和功能兼容到Android 2.1中。
  2. onCreate()方法是一个活动被创建时必须执行的方法。
  3. setContentView()方法用来引入布局,这里引入的是activity_main。

(3)、布局

上面我们引入了activity_main布局,这个布局在文件app>src>main>res>layoutactivity_main.xml中。

<?xml version="1.0" encoding="utf-8"?><android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    tools:context="com.example.a14784.myapplication.MainActivity">    <TextView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="Hello World!"        app:layout_constraintBottom_toBottomOf="parent"        app:layout_constraintLeft_toLeftOf="parent"        app:layout_constraintRight_toRightOf="parent"        app:layout_constraintTop_toTopOf="parent" /></android.support.constraint.ConstraintLayout>
原创粉丝点击