Android Studio 项目目录结构

article/2025/10/12 8:00:57

Android 平台的主要组件

        使用Android Studio工具开发Android应用程序,创建的工程目录结构比较复杂,开发人员应该清楚各个目录下面放置的是什么东西。工程根目录下有app和Gradle Scripts,app是应重点关注的,app下面的主要目录有manifests、java和res。

        manifests目录中的AndroidManifest.xml是当前Android应用程序的清单文件,记录应用中所使用的各种组件,java是Java源代码目录,res是资源目录。

R.java

        访问res目录中的资源文件,并不能通过Java IO技术实现,而是通过R.java文件访问。R.java文件是在工程编译时候自动产生的R类。

        R类中包含很多静态类,且静态类的名字都与res中的一个目录名字对应,就像是资源字典大全,包含了用户界面、图像、字符串等对应于各个资源的标识符,R类定义了该项目所有资源的索引。例如,在程序代码中访问activity_main.xml布局文件,可以通过表达式R.layout.activity_main访问。

        R类还可以访问界面中的视图,如果视图在布局文件中定义id属性,类似代码"android:id="@+id/btn_1",那么在程序代码中就可以通过R.id.btn_1表达式访问该视图。

        R.java文件路径:Android列表视图下是看不到的,要想找到R文件,就要把项目列表视图切换成Project模式。然后依次点击-->app-->build-->generated-->source-->r-->debug,在debug下的两个选项的子文件中分别有一个R文件,这就是你想要找的R文件(Android Studio高版本就找不到定能找到)。

资源目录(res)

        资源是指代码使用的附加文件和静态内容,例如位图、布局定义、界面字符串、动画说明等。

        将各类资源放入项目res/目录的特定子目录中。例如,以下是一个简单项目的文件层次结构:

        drawable:位图文件(png(推荐)、9.png(推荐)、jpg(可用)、gif(不推荐使用))或XML文件,这些文件编译成以下绘制资源。

        layout:定义用户界面布局的XML文件(定义了Activity或UI组件中的UI的体系结构。)

        mipmap:不同启动器图标密度的可绘制文件(png(推荐)、jpg(可用)、gif(不推荐使用))。

        values:参数值目录,存放软件所需要显示的各种文字和一些数据。可以在这个目录下的strings.xml中存放各种文字,还可以存放不同类型的数据,例如colors.xml、dimens.xml和styles.xml等。

        注意:切勿将资源文件直接保存在res/目录内,因为这样会造成编译错误。

drawable和mipmap的区别:

        drawable:图标有固定的尺寸。

        drawable:9-Patch图片和Shape资源文件只能放在drawable目录中

        mipmap:需要适应屏幕分辨率的图片推荐放在mipmap目录中,可以提高显示性能、占用内存少。

        mipmap:系统会对其缩放进行一些性能的优化.图片会更加美观.

        注意:切勿将资源文件直接保存在 res/ 目录内,因为这样会造成编译错误。

清单文件AndroidMainfest.xml

        每个应用项目必须在项目源设置的根目录中加入AndroidManifest.xml文件(且必须使用此名称)。清单文件会向Android构建工具、Android操作系统和Google Play描述应用的基本信息。

声明应用组件如:

        声明应用必须具备的权限,例如应用中使用到的服务权限(如GPS服务、互联网服务和短信服务等等)。

        声明应用所需的最低Android API级别。

        1、声明应用的Java源代码包名,包名(如com.scc.demo)非常重要,它是应用的唯一标识符。

        2、描述应用中的组件,即Activity (活动) 、Service(服务)、Broadcast Receiver (广播接收器)和Content Provider (内容提供者)。

        3、声明应用必须具备的权限,例如应用中使用到的服务权限(如GPS服务、互联网服务和短信服务等等)。

        4、声明安全控制和测试等信息

        注意:在Android Studio工程中,AndroidManifest.xml位于manifests根目录下;而在操作系统(如Windows的资源管理器)中,AndroidManifest.xml位于应用的根目录下。

AndroidManifest.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.scc.demo"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.Demo"><activityandroid:name=".actvitiy.RadioButtonActivity"android:configChanges="orientation|screenSize"android:launchMode="standard"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name="com.scc.demo.actvitiy.RedActivity"><intent-filter><action android:name="android.intent.action.VIEW" /><category android:name="android.intent.category.DEFAULT" /><category android:name="android.intent.category.BROWSABLE" /><dataandroid:host="scc"android:path="/redActivity"android:port="2021"android:scheme="sccdemo" /></intent-filter></activity><service android:name=".service.StartService"/><service android:name=".service.BindService"/><activityandroid:name="com.scc.demo.actvitiy.BlueActivity"android:launchMode="standard" /></application></manifest>

Android Units 单位

        Android UI 设计过程中给 UI 控件添加宽高和定位都需要用到距离,有需求就有内容,丈量的单位,就产生了。

        Android 中支持 5 种单位类型

单位说明
dpdevice independent pixels(设备独立像素) 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持 WVGA、HVGA 和 QVGA 推荐使用这个,不依赖像素
pxpixels(像素). 不同设备显示效果相同,一般 HVGA 代表 320x480 像素,这个用的比较多
ptpoint,是一个标准的长度单位,1pt=1/72 英寸,用于印刷业,非常简单易用
spscaled pixels(放大像素). 主要用于字体显示

http://chatgpt.dhexx.cn/article/CLHEIihd.shtml

相关文章

c# 深拷贝浅拷贝

浅拷贝&#xff1a;仅仅把对象的引用进行拷贝&#xff0c;但是拷贝对象和源对象是引用同一份实体。此时&#xff0c;其中的一个的成员对象的改变都会影响到另外一个成员的对象 深拷贝&#xff1a;指的是拷贝一个对象时&#xff0c;不仅仅把对象的引用进行拷贝&#xff0c;还把…

详细讲解js中的深拷贝与浅拷贝

1 概述 深拷贝与浅拷贝在其它语言中也经常被提及到&#xff0c;在实际项目开发过程中也常常需要区分当前使用的到底是深拷贝还是浅拷贝&#xff0c;有时候在该使用深拷贝的地方&#xff0c;我们使用了浅拷贝&#xff0c;会导致深藏不露的bug。 2 数据类型 在探讨深浅拷贝之前…

js中的浅拷贝与深拷贝

在前端开发中的过程中我们经常要接触到浅拷贝与深拷贝的问题&#xff0c; 下面就对浅拷贝与深拷贝的概念、区别以及其有哪种实现方法来做一个简单的说明。 概念 浅拷贝&#xff1a; 浅拷贝是指&#xff0c;一个新的对象对原始对象的属性值进行精确地拷贝&#xff0c;如果拷贝…

JS之深拷贝与浅拷贝

一、理解 深拷贝 与 浅拷贝 针对于 引用类型(Object,Array,Function) 来说的 浅拷贝&#xff1a;在栈中分配一块新内存&#xff0c;拷贝需要拷贝的值&#xff0c; 对简单数据类型&#xff0c;就是拷贝值&#xff1b;对复杂数据类型&#xff0c;就是拷贝了一份栈内存储的堆内存…

lua踩坑之浅拷贝与深拷贝

文章目录 一、前言二、浅拷贝和深拷贝三、浅拷贝1.拷贝对象为string、number、boolean等基础类型时2.拷贝对象的类型为table类型时 三、深拷贝 一、前言 先来说说&#xff0c;为什么突然谈及到浅拷贝和深拷贝这个问题。因为时间紧任务重&#xff0c;lua零基础参与项目研发&…

解决浅拷贝的五种方式

浅拷贝和深拷贝以及值类型、引用类型概念理解请移步 认识javascript值类型&#xff0c;引用类型及浅拷贝与深拷贝的关系小白gis每周更新与WebGIS设计相关的文章教程&#xff0c;通过在线示例以及demo的方式&#xff0c;介绍Arcgis API、开源gis API的使用方法&#xff0c;帮助学…

iOS-深拷贝和浅拷贝

一、深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 1、深拷贝&#xff08;Deep Copy&#xff09;&#xff1a;内容拷贝&#xff0c;拷贝数据到一块新内存区域&#xff0c;指针指向拷贝的数据区 &#xff08;另外创造一个一模一样的对象&#xff0c;新对象跟原对象不共享内存&am…

实现浅拷贝

浅拷贝是指&#xff0c;一个新的对象对原始对象的属性值进行精确地拷贝&#xff0c;如果拷贝的是基本数据类型&#xff0c;拷贝的就是基本数据类型的值&#xff0c;如果是引用数据类型&#xff0c;拷贝的就是内存地址。如果其中一个对象的引用内存地址发生改变&#xff0c;另一…

浅拷贝

图片转自js 深拷贝 vs 浅拷贝 我们平常说的深拷贝和浅拷贝都是基于对诸如 Object 和 Array 等引用数据类型的拷贝。对于基本数据而言&#xff0c;拷贝为某个值的赋值。 在说拷贝之前&#xff0c;我们先复习一下什么是基本数据类型和引用类型。 基本数据类型 JavaScript 中基…

深浅拷贝以及解决浅拷贝(以string浅拷贝为例)

一、什么是浅拷贝 在类和对象的时候&#xff0c;其中编译器生成的默认拷贝构造函数中&#xff0c;内置类型是按照字节方式直接拷贝的&#xff0c;而自定义类型是调用其拷贝构造函数完成拷贝的。 默认的拷贝构造函数对象按内存存储按字节序完成拷贝&#xff0c;这种拷贝叫做浅…

ctf之培根密码

根据特征怀疑是培根密码 flag{AAAABAAAAAAAABAABBBAABBABABAAABAABAAAABBAABAAABABBABAAAAAABAABAAAABBBABABAABAABA} 直接在线解密 https://tool.bugku.com/peigen/ flag{BACONISDELICIOUS}

培根密码加解密

分享一下我老师大神的人工智能教程&#xff01;零基础&#xff0c;通俗易懂&#xff01;http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识&#xff0c;造福人民&#xff0c;实现我们中华民族伟大复兴&#xff01; 0x00 介绍 培根密码实际上就是一种替换密…

培根密码解密脚本

官方吐槽&#xff1a;疫情复发难受&#xff0c;什么时候是个头 #!/usr/bin/env python3 # -*- coding:utf-8 -*- #Author&#xff1a;later_future import string miweninput("请输入密文&#xff1a;") count0 msg"" flag"" #培根加密百度百科…

攻防世界crypto部分sherlock的writeup,原来不是培根密码。

下载附件后&#xff0c;发现是一个很大的文本&#xff0c;搜了下flag没啥收获。 1、后来看到下面这个 2、明显的故意大写&#xff0c;难道是培根密码&#xff1f;这就有思路了&#xff0c;将大写过滤出来&#xff1a; cat f590c0f99c014b01a5ab8b611b46c57c.txt | grep -Eo […

培根密码加解密(Python)

原理 加密时&#xff0c;明文中的每个字母会根据下面转换成5个字母&#xff1b; 解密时&#xff0c;密文中的每5个字母为一组转换成对应的1个字母&#xff1b; Python代码如下&#xff1a; CODE_TABLE { #培根字典aaaaa:a,aaaab:b,aaaba:c,aaabb:d,aabaa:e,aabab:f,aabba:…

CTF密码学-加解密总结

零基础学黑客&#xff0c;搜索公众号&#xff1a;白帽子左一密码学基本简介 密码学&#xff08;在西欧语文中&#xff0c;源于希腊语krypts“隐藏的”&#xff0c;和grphein“书写”&#xff09;是研究如何隐密地传递信息的学科。 在现代特别指对信息以及其传输的数学性研究&…

密码及编码

1. 密码 古典密码学 凯撒密码(Caeser)&#xff1a;位移密码 特殊形式&#xff08;加解密相同&#xff0c;因为26个字母是循环的&#xff09;&#xff1a;ROT13 栅栏密码&#xff1a;分组密码。 弗吉尼亚 现代密码学 对称加密算法&#xff1a;使用加密用过的秘钥及相同算法的…

CTF-密码学-培根密码

题目&#xff1a;bacon bAcon iS a MEaT prodUcT prePared frOm a pig and UsuALLy cUReD. 读题&#xff1a;翻译过来意思是培根 审题&#xff1a;联想到培根密码 解题&#xff1a;培根密码就是大写变A小写变B import string timu"bAcon iS a MEaT prodUcT prePared frOm…

【无标题】简单的培根密码解密

第一题 题目AABBBAABAAABABAABABAABBAB BABAAABBABBAAAAAAABB 此题由大写字母AB组成&#xff0c;不难看出这可以用培根密码转换器进行解密得出flag 解密得出flag&#xff5b;HELLO WORD&#xff5d;

CTF-Show密码学【摩斯码、培根密码】

萌新 密码33 一、题目信息 题目名称&#xff1a;我想吃培根题目描述&#xff1a;-- — .-. … . …–.- … … …–.- -.-. — — .-… …–.- -… …- - …–.- -… .- -.-. — -. …–.- … … …–.- -.-. — — .-… . .-. …–.- – – -… -… – -… – -… – – – -…