当前位置: 首页 > news >正文

Android项目中各文件的作用

一、Android项目结构:

在这里插入图片描述

二、各文件夹和文件的作用:

在这里插入图片描述

1. manifests文件夹:AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.firstapplication">

    <application
        android:allowBackup="true"
        android:dataExtractionRules="@xml/data_extraction_rules"
        android:fullBackupContent="@xml/backup_rules"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.FirstApplication"
        tools:targetApi="31">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
  • 系统配置文件,位于整个项目的根目录下,是Android应用程序中重要的清单文件
  • 为应用程序的启动和运行提供必要的基本信息。
  • 仅包含一个<application></application>标签,代表整个app。
  • 包含多个<activity></activity>标签,代表多个不同页面。
  • 描述了应用程序中的全局数据,包括了应用程序包名,组件(activities, services, 等等),它们各自的实现类,各种能被处理的数据和启动位置。
  • 关于文件中的<intent-filter>标签:
    • android.intent.action.MAIN:决定应用的入口Activity,也就是我们启动应用时首先显示哪一个Activity。
    • android.intent.category.LAUNCHER:表示activity应该被列入系统的启动器(launcher)(允许用户启动它)。Launcher是安卓系统中的桌面启动器,是桌面UI的统称。
    • action和category都是Intent的组成部分,前者表示意图的动作,后者表示意图的类别。所以对于上面这段话,我的理解是:android.intent.action.MAIN表明了一个应用启动时首先启动这个Activity的动作。怎样启动呢?android.intent.category.LAUNCHER告诉了我们动作是什么。

2. R.Java文件:

  • 自动收录当前应用程序中所有的资源,并根据这些资源建立对应的ID,包括:布局资源、控件资源、String资源、Drawable资源等。
  • 我们可以简单的把R.java理解成是当前Android应用的资源文件的字典。
  • 文件自动生成,自动维护,程序开发人员不能对其进行修改。
  • 当用户向drawable-hdpi、drawable-ldpi、drawable-mdpi文件夹中增加图片,或者在main.xml文件中配置控件以及在strings.xml文件中定义文本信息都会自动在此文件中生成一个唯一的ID,以供程序使用。
  • project视图下打开改程序可查看R.java文件在硬盘中存储的位置:app/build/generated/not_namespaced_r_class_sources/debug/r/[packagename]/R.java。

3. res:资源文件夹:

  • 资源文件夹,包括图片、声音、布局文件、菜单等。项目中应到的资源都包含在此文件夹中,可以看到子文件夹比较多。
  • 应用程序运行的时候,res中的内容会在启动的时候载入内存。
  • res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id
    • res/drawable: 主要存放一些用户自定义的形状和背景选择器(用于改变一些控件的背景颜色)。这些资源文件都是xml类型。
    • res/layout: 界面布局文件,文件类型为xml。可以控制各个Activity中控件的位置及相关的属性。在Android的应用程序中有两种方式生成用户界面。一种是通过静态的界面描述文件,另外一种就是通过Java文件
    • res/mipmap: 包含一些应用程序可以用的原生图片文件(png,gif,jpg)。Google强烈建议使用mipmap存放图片文件,可以提高系统渲染图片的速度,减轻CPU的压力。
    • res/values: 放置应用程序中需要用到的,如:我们常用的字符串,颜色值,数组等。Strings.xml里存储的都是键值对,这些键值对会在R.java中生成相应的id。这样,我们需要使用这些资源时,就可以使用相应的id来引用这些资源。好处: 把所有的资源提供了统一的入口,修改程序会变得更加方便。 该目录中包含了所有的XML格式的参数描述文件,如string.xml字符串描述文件、color.xml颜色描述文件、style.xml样式描述文件和array.xml数组描述文件等。

4. java文件夹: 项目的源文件

  • Android应用程序主要由资源文件和代码文件两部分构成。资源文件以xml格式描述,代码文件主要为java文件,用于实现业务逻辑
  • Java目录:项目的源代码文件,所有用户自己添加的或者允许用户修改完成一定业务逻辑的java文件全部存放于该目录下。该目录下的java文件以用户所声明的包自动组织。
  • res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id。
  • 在Android的应用程序中有两种方式生成用户界面。一种是通过静态的界面描述文件,另外一种就是通过Java文件

5. MainActivity.java

  • 为了在Android系统上显示图形界面,需要使用代码继承Activity类
public class MainActivity extends Activity {
	protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);//声明了需要显示的用户界面
    }
}
  • 关于R.layout.activity_main的说明:res 文件夹中放置的所有的资源文件都会在R.java中生成相应的id静态常量,表示R.java文件中layout内部类的activity_main静态常量,即使用了res/layout文件夹内的activity_main.xml文件。
  • onCreate()方法会在Activity首次启动时会被调用。
  • savedInstanceState参数是保存当前Activity的状态信息,如果一个非running的Activity因为资源紧张而被系统销毁,当再次启动这个Activity时,可以通过这个保存下来的状态实例,即通过saveInstanceState获取之前的信息,然后使用这些信息,让用户感觉和之前的界面一模一样,提升用户体验。
  • public void setContentView (int layoutResID)

相关文章:

  • Java比较器(Comparable接口)
  • ESP Insights 支持通过高级筛选进行分组分析
  • 网课答案公众号搭建的题库接口提供
  • 网课答案公众号题库在这里直接搭建使用
  • Elasticsearch: Query string与Simple query string
  • 训练神经网络用什么显卡,cpu可以训练神经网络吗
  • 中秋节到啦!程序媛请大家品尝月饼啊
  • BOM介绍以及应用以及this指向问题
  • python中列表(list)与numpy(array)的区别,行与列与维度的选择
  • js防抖和节流
  • c语言分层理解(c语言指针(下))
  • 中国剩余定理(Chinese remainder theorem, CRT)
  • Windows与网络基础-9-windows基本命令-网络相关操作
  • Label Matching Semi-Supervised Object Detection
  • 【web-利用信息泄露】(10.3)防止信息泄露
  • 自己简单写的 事件订阅机制
  • Android框架之Volley
  • CSS盒模型深入
  • Java 网络编程(2):UDP 的使用
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Octave 入门
  • React的组件模式
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • 二维平面内的碰撞检测【一】
  • 技术:超级实用的电脑小技巧
  • 前端技术周刊 2019-02-11 Serverless
  • 浅谈Golang中select的用法
  • 实现菜单下拉伸展折叠效果demo
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 由插件封装引出的一丢丢思考
  • Prometheus VS InfluxDB
  • 函数计算新功能-----支持C#函数
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ###C语言程序设计-----C语言学习(3)#
  • $.ajax()参数及用法
  • $.ajax()方法详解
  • $forceUpdate()函数
  • (3)llvm ir转换过程
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (论文阅读40-45)图像描述1
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转) ns2/nam与nam实现相关的文件
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转载)虚幻引擎3--【UnrealScript教程】章节一:20.location和rotation
  • .NET gRPC 和RESTful简单对比
  • .net 程序发生了一个不可捕获的异常
  • .net 调用php,php 调用.net com组件 --
  • .Net 高效开发之不可错过的实用工具