(1)-Android学习笔记之:初识Android系统架构和项目结构

Android系统架构

Android程序结构

创建一个Android项目,为初学便于理解,将程序项目结构切换为Project模式,项目结构如下

.gradle和.idea:这两个目录下放的都是Android Studio自动生成的文件,无需我们关心,也不需要手动编辑。

app:项目中的代码、资源等内容几乎都放在这个目录下,开发工作基本在这个目录下进行。

  libs:如果项目引用了第三方jar包,就需要吧这些jar包放在libs目录下,此目录下的jar包都会自动添加到构建目录中。

  androidTest:此处是用来编写Android Test测试用例的,可以对项目进行一些自动化测试。

  java:此目录防止我们所有Java代码的位置,展开此目录可看到新建此项目适的MyApplicationActivity文件就在里面。

  res:这个目录下存放项目使用到的所有图片、布局、字符串等资源。

    drawable开头:放图片,drawable和mipmap一样,只是没有自动生成,如果为了兼容各种设备,则需要自己新建drawable-hdpi、drawable-xhdpi、drawable-xxhdpi等文件夹,开发程序时最好将一张图片提供不同分辨率版本,分别放在这些文件夹下,运行时会自动根据当前设备分辨率高低选择加载哪个文件夹图片。如果只有一张图片,则将所有图片放在drawable-xxhdpi下也可以。

    layout开头:放布局文件

    mipmap开头:放应用图标。(有很多mipmap开头的文件,主要是为了让程序能更好兼容各种设备)

    values开头:放字符串、样式、颜色等配置。

  AndroidManifest.xml:整个Android项目配置文件,在程序中定义的所有四大组件都要在这个文件中注册,并还可以在文件中给应用程序加权限声明。

  test:用来编写Unit Test测试用例,对项目自动化测试的另一种方式

  .gitignore:用于将app模块指定的目录或文件排除在版本控制外,作用和外层的类似。

  build.gradle:app木块的gradle构建脚本,此文件中会指定很多项目构建相关的配置。

  prohiard-rules.pro:用于指定项目代码的混淆规则,当开发完成后打包成安装包文件,如果不希望代码被别人破解,通常会将代码进行混淆,从而让破解这难以阅读。

build:无需关心,包含了编译时自动生成的一些文件

gradle:包含gradle wrapper的配置文件,使用gradle wrapper的方式不需要提前将gradle下载好,而是会自动根据本地的缓存情况决定是否联网下载gradle,编译器默认没有启动,如果需要打开,可点击File--Settings--Build Execution,Deployment-Gradle进行配置更改。

.gitignore:这个文件是用来将制定的目录或文件排除在版本控制之外。

build.gradle:项目全局的gradle构建脚本,通常这个文件的内容不需要修改。

.gradle.properties:全局的gradle配置文件,此处配置的属性会影响项目中所有的gradle编译脚本。

gradlew和gradlew.bat:这两个文件用来在命令行界面执行gradle命令,其中gradlew是在Linux或Mac系统中使用的,gradle.bat实在windows系统中使用的。

local.properties:这个文件用于指定本机中的Android SDK路径,通常是自动生成的,不需要修改。除非本机中的Android SDK位置发生了变化。

MyApplication.iml:iml文件是所有IntelliK IDEA项目都会生成一个文件,(Android Studio是基于IntelliJ IDEA开发的),用于标识这是一个IntelliJ  IDEA项目,不需要修改这个文件的任何内容。

settings.gradle:这个文件用于指定项目中所有引用的木块。由于上图项目只有一个app模块,因此此文件也只引用了app这个模块。

Android项目文件分析

首先运行一下刚刚创建的项目。

打开AndroidManifest.xml项目配置文件,可以看到如下代码

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

此段xml代码表示对MainActivity这个活动进行注册,没有在此文件中注册的活动是不能使用的,其中intent-filter中的两行代码最为重要,<action android:name="android.intent.action.MAIN" />和<category android:name="android.intent.category.LAUNCHER" />表示此活动是这个项目的主活动,打开程序首先看到的就是这个活动。

然后我们在main-java-中看看MainActivity.java类,可以看到继承自AppCompatActivity,这是一个向下兼容的Activity,可将各个系统版本增加的特性和功能最低兼容到Android2.1版本,Activity是Android系统提供的一个活动基类,项目中用到的所有活动都必须继承它或它的子类才能拥有活动的特性。然后可以看到有一个onCreate方法,这个方法是在活动呗创建时必定要执行的方法,其中只有两行代码,并没有看到Hello word!字样,那么上图运行时显式的Hello word!是怎么来的呢?

  Android程序的设计讲究逻辑和视图分离,因此不推荐直接在活动中直接编写界面,而是在布局文件中编写界面,然后在活动中引用进来。如下代码,在onCreate方法第二行调用了setContentView(R.layout.activity_main),表示当前活动引入一个R/layout目录activity_main布局。

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

打开res/layout目录,可以看到activity_main.xml文件,然后切换到Text模式,可以看到一个<TextView>标签下,有一行android:text="Hello World!"。

原文地址:https://www.cnblogs.com/vice/p/9011727.html

时间: 2024-09-29 05:07:08

(1)-Android学习笔记之:初识Android系统架构和项目结构的相关文章

Android学习笔记十六.Android数据存储与IO.SharedPreferences

SharedPreferences 对于应用程序的数据输入.输出,如果是应用程序只是少量数据需要保存,那么使用普通文件就可以了(SharedPrefereces);但如果应用程序有大量数据需要存储.访问,就需要借助数据库了.Android系统内置了SQLite数据库,SQLite数据库是一个真正轻量级的数据库,它没有后台进程,整个数据库就对应于一个文件. 1.SharedPreferences简介 (1)概念:SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此它保存

Android学习笔记:对Android应用进行单元测试

原文地址:http://blog.csdn.net/duancanmeng/article/details/7458851 第一步:在AndroidManifest.xml中加入如下两段代码: <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pccw" android:versionCode="1" android:versi

Android学习笔记之,调用系统图库,添加自定义字体,屏幕截图

新年开始的第一天就来学习了慕课迎春活动中的Android心愿分享一课,学到了几个知识点,在此记录一下. 1.调用系统图库调用系统图库用的是intent,步骤为弹出系统图库选择器,选择图片后获取到所选择的图片.代码如下: //在需要的地方调用 Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/

Android学习笔记—第二章 Android四大组件

第二章 Android四大组件 Activity(活动窗口): Android程序中最基本的模块,为用户操作而展示的可视化用户界面.一个Android应用程序可以只有一个Activity,也可以包含多个Activity,数量及每个Activity的作用取决于应用程序及其设计. (1)Activity的生命周期 创建→运行   onCreate   onStart   onResume 运行→销毁   onPause    onStop    onDestory 运行→停止(不可见  不可操作)

Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题

同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件. 解决办法如下: 1.谷歌官方已经给出了相关的文档,参照网上搜索的资料,首先,我的问题是: Error:Execution failed for task ':duchazhushou:dexRelease'. > com.android.ide.common.internal.LoggedErrorException:

Android学习笔记一:Android基本组件和Activity生命周期

View   View是创建UI的基础控件, Activity  一个应用程序可能包含多个Activity,用来在屏幕中展示用户数据或者编辑用户数据. Fragement  类似于Activity的子控件,一个Activity可以包含一个或多个Fragement. Intent   通常使用Intent来完成以下工作 1.广播消息(Broadcast);2.启动服务(Service):3.启动Activity(Launch Activity):4.显示网页或者联系人列表:5.拨号或者接听电话.

二、Android学习第二天——初识Activity(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以后,就可以开发跟运行Android应用程序了,因为Activity是开发中不可或缺的组成部分,所以要对Activity有所认识. 以下两点是需要注意的:(个人总结) 凡是覆写得方法,在方法体中的第一行一定是super.XXX(),一定要先调用父类里的相应方法做必要的事情,再根据自己的需求去写其他的代

Pro Android学习笔记(三三):Menu(4):Alternative菜单

什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供.我们将相关信息存储在一个intent中,例如该文本的Uri.这个intent可以匹配系统的多个应用,替代菜单将这些应用一一列出,菜单项的title就是该可被调用的activity的名字,图标也为该可被调用的activity的图表. 小例子说明 我们通过一个小例子进行学习,简单地打开一个URL:we

Pro Android学习笔记(二九):用户界面和控制(17):include和merge

xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 <?xml version="1.0" encoding="utf-8"?> <Button xmlns:android="http://schemas.android.com/apk/res/android"     androi