Android从0到1

Android从0到1!

资源目录简述

我们新建一个项目后看到左边的Project那一栏,是我们开发这个项目的资源目录,通俗点说,就是成堆的文件夹和文件;那这些不同的文件有什么作用捏

image-20221007194615516

任何一个新建的项目都会默认使用Android模式的项目结构,但这并不是项目真实的目录结构,而是被Android Studio转换过的。这种项目结构简洁明了,适合进行快速开发,但是对于新手来说可能不易于理解。我们切换到真实的目录:

​ 1. 点击Android右边的下拉箭头

image-20221007194945848

  1. 选中Project

    image-20221007195045827

  2. 然后我们一层一层地拨开第一个文件夹:

image-20221007195344880

(介绍一个小功能,如果你找不到你现在右边的文件在文件夹的哪个位置,点击这个瞄准镜,目录就会展开啦

image-20221007195255040


app目录下的结构

【 源自郭神的书《第一行代码》】

那么下面我们就来对app目录下的内容进行更为详细的分析。

  1. build

​ 这个目录和外层的build目录类似,也包含了一些在编译时自动生成的文件,不过它里面的内容会更加复杂,我们不需要过多关心。

  1. libs

​ 如果你的项目中使用到了第三方jar包【就是一些工具包】,就需要把这些jar包都放在libs目录下,放在这个目录下的jar包会被自动添加到项目的构建路径里。

  1. androidTest

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

  1. java

​ 毫无疑问,java目录是放置我们所有Java代码的地方(Kotlin代码也放在这里),展开该目录,你将看到系统帮我们自动生成了一个MainActivity文件。

  1. res

​ 这个目录下的内容就有点多了。简单点说,就是你在项目中使用到的所有图片、布局、字符串等资源都要存放在这个目录下。当然这个目录下还有很多子目录,图片放在drawable目录下,布局放在layout目录下,字符串放在values目录下,所以你不用担心会把整个res目录弄得乱糟糟的。

  1. AndroidManifest.xml

​ 这是整个Android项目的配置文件【可以说是整个安装程序的目录】,你在程序中定义的所有四大组件都需要在这个文件里注册,另外还可以在这个文件中给应用程序添加权限声明。由于这个文件以后会经常用到,我们等用到的时候再做详细说明。

  1. test

​ 此处是用来编写Unit Test测试用例的,是对项目进行自动化测试的另一种方式。

  1. .gitignore

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

  1. app.iml

​ IntelliJ IDEA项目自动生成的文件,我们不需要关心或修改这个文件中的内容。

  1. build.gradle

​ 这是app模块的gradle构建脚本,这个文件中会指定很多项目构建相关的配置。

  1. proguard-rules.pro

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


很多看不懂?没关系,一口吃不下大胖子,多用多搜索多百度,慢慢就会明白的;对于现阶段来说,我们只要记住两个目录:java和res,一个放java文件,一个放页面的资源,如:图片、布局、字符串等;

四大组件简述

Android四大组件分别为activity、service、content provider、broadcast receiver,中文对应的是活动、服务、内容提供器、广播接收器

这个相信大家准备二面的时候都背了吧,这些都是Android祖传知识点了,学安卓的人必须要知道,这里再给大家通俗的介绍一下,非官方,但可能会便于你的理解:

Activity(活动):这个别见名思意,一个Activity可以理解成一个app的某个单独的界面,特像网站的一个页面,那一个完整app一般不会只有一个界面吧,比如微信就会有登录界面、注册界面、微信主界面、朋友圈界面等,这些都可以理解成是一个个的Activity组成的,那么问题来了,Android是如何把不同的界面(Activity)连接起来的呢?怎么从登录界面跳转到app的主界面呢?这个就不得不提一个东西,叫做Intent(该单词本意是:意图、目的),这个东西就是连接不同界面(Activity)的桥梁,可以理解成就是一个操作从Activity1跳转到Activity2的操作)可以实现从登录界面,点击按钮跳转到app的主界面,还可以用于不同界面的数据传递;当然Intent的功能可不止于此,不光可以连接Activity,它还是四大组件之间的连接器,这个我们后面上课会具体学习怎么实践;

Service(服务):说到这个,就可以把他拿Activity对比啦,Activity是看得见的页面,Service是幕后的工作者,就是我们通常说的app后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面,很低调,最经典的例子就是某天凌晨0:00分,你还没有睡觉,这是你戴上了耳机,打开了网易云音乐,开始刷着评论,感到emo“生而为人,我很抱歉”时,别忘了,网易云音乐的app在后台运行给你放音乐的四大组件之一叫做Service,你即使把网易云退到后台(最小化),去刷微信或者锁屏,音乐还是给你放着,这就是Service的作用。

content provider(内容提供器):这个可以见名思意,就是给你的app提供内容的,不过这些内容可以使其他app里面的数据,实现了不同app里面共享数据,虽然说很多手机app的信息数据保护很严密,但是也不能完全封闭,这样这个app的拓展性就会不高,例如,通讯录数据会被多个应用程序使用,这就需要使用到内容提供器。

broadcast receiver(广播接收器):有这样一个场景,你的微信登录在你的手机,但是你买了新手机想用它来登录,当新手机登陆成功,这个时候你的旧手机的微信就会收到一条消息,你的微信号在别处登录,已强制退出;而这条消息的本质是就是使用了广播接收器,在新手机上发送一条广播,旧手机的广播接收器收到广播消息,做出返回登录页的操作(也是使用Intent连接),这就是广播的使用场景之一。

基础操作——新建一个Activity

File -> New -> Activity -> Empty Activity(一般我们都用这个,其他的Activity什么时候用,需要你们自己去探索)

image-20221007212333411

Java文件名和xml布局文件名一般是对应的,MainActivity(驼峰命名法)对于activity_main(字母小写 + 下划线连接单词)


1)驼峰命名法

小驼峰命名法:除第一个单词之外,其他单词首字母大写,例如:myFirstNamemyLastName。常用于变量名,函数名

大驼峰命名法(又称为帕斯卡命名法):相比小驼峰法,大驼峰法把第一个单词的首字母也大写了,例如:public class DataBaseUser。常用于类名,属性,命名空间等。

2)下划线命名法

名称中的每一个逻辑断点都用一个下划线来标记,例如:print_employee。下划线命名法是随着C语言的出现流行起来的,在UNIX/LIUNX这样的环境,以及GNU代码中使用非常普遍。

【源自https://www.cnblogs.com/linuxAndMcu/p/11280748.html】


创建好点击Finish即可

image-20221007212739397

这样就成功创建了一个活动,我们看看AndroidManifest.xml这个文件(我们叫它安卓清单安卓注册表

image-20221007213434465

这个文件可以看到我们创建的所有四大组件,如图中可以看到我们只有两个Activity,新建项目的时候,我们的AS会自动创建一个Activity(一般叫MainActivity),还有我们刚刚创建的MainActivity2,大家如果安装我们上面的步骤新建一个Activity,安卓清单就会给我们自动生成这些代码,不会出问题,但是如果有些同学手动新建java文件,然后再创建xml文件,这就很麻烦了,不仅要自己在安卓清单里写这段代码,还要自己手动关联两个文件,**如果在安卓清单里面没写这些注册Activity的代码就运行,你的app会闪退!闪退!闪退!**对于我们新手,还是老老实实按照上面的步骤来吧。

image-20221007213645931

日志打印

C++打印信息是cout << “I Love Quanta”; 那我们Android如何输出我们想要的信息呢?学过Java的同学会说,System.out.print(“I Love Quanta”); 这个在AS中也是可以运行的,但是我个人认为不太好管理,并且AS里面的输出信息太多了,不好筛选;那怎么办?我们有Log这个工具

这行代码有两个参数,第一个是tag,第二个是msg

image-20221007214830597

如下图,我们运行就可以在通过输入MainActivity,来看到我们要的信息啦

image-20221007214943333

点运行,然后点击左下角的选项栏的Logcat

image-20221007215058028

输入我们的第一个参数tag的值MainActivity,软件安装之后,我们就可以看到我们要打印的信息啦,看上去好像很繁琐,但等你后面开发一个项目的时候,你就知道这个对AS来说是很方便的,可以同时筛选同一类别tag的信息,测试的时候非常好用

image-20221007215413832

是只有Log.d(tag,msg)这个函数吗,其实Log这个工具还是分日志级别的

级别从低到高:

Log.v():用于打印那些最为琐碎的、意义最小的日志信息。对应级别verbose,是Android日志里面级别最低的一种。

Log.d():用于打印一些调试信息,这些信息对你调试程序和分析问题应该是有帮助的。对应级别debug,比verbose高一级。

Log.i():用于打印一些比较重要的数据,这些数据应该是你非常想看到的、可以帮你分析用户行为的数据。对应级别info,比debug高一级。

Log.w():用于打印一些警告信息,提示程序在这个地方可能会有潜在的风险,最好去修复一下这些出现警告的地方。对应级别warn,比info高一级。

Log.e():用于打印程序中的错误信息,比如程序进入了catch语句中。当有错误信息打印出来的时候,一般代表你的程序出现严重问题了,必须尽快修复。对应级别error,比warn高一级。

好了,今天就到这里吧

猜你喜欢

转载自blog.csdn.net/victorrrrt/article/details/127248443