工程结构、设计规范、活动页面
想要观察App的运行效果,有两种办法:
在真实手机上调试的时候:打开开发者选项、启动USB调试
App 开发主要有两大技术路线,分别是原生开发【谷歌官方的技术】和混合开发【与网页技术混合,可以跨平台,性能没有原生开发好】。
Android 的官方编程语言包括Java和Kotlin。
C/C++
XML
全称为Extensible Markup Language,即可扩展标记语言,严格地说,XML并非编程语言,只是一种标记语言。它类似于HTML,利用各种标签表达页面元素,以及各元素之间的层级关系及其排列组合。每个XML标签都是独立的控件对象,标签内部的属性
以"android."打头,表示这是标准的安卓属性,各属性分别代表控件的某种规格。比如下面是以XML书写的文本控件:
上面的标签名称为TextView,翻译过来叫文本视图,该标签携带4个属性
说明如下:
id:控件的编号。
layout_width:控件的布局宽度
wrap_content表示刚好包住该控件的内容
layout_height:控件的布局高度
wrap_content表示刚好包住该控件的内容。
text:控件的文本,也就是文本视图要显示什么文字。
综合起来,以上XML代码所表达的意思为:这是一个名为tv_hello的文本视图,显示的文字内容是"Hello World",它的宽度和高度都要刚好包住这些文字。
APP连接的数据库
在学习Java编程的时候,基本会学到数据库操作,通过JDBC连接数据库进行记录的增删改查,这个数据库可能是MySQL,也可能是oracle,还可能是SQL Server。然而手机应用不能直接操作上述几种数据库,因为数据库软件也得像应用软件那样安装到操作系统上,比如MySQL提供了Windows系统的安装包,也提供了Linux系统的安装包,可是它没有提供Android系统的安装包呢,所以MySQL没法在Android系统上安装,手机里面的App也就不能直连MySQL。
既然MySQL、Oracle这些企业数据库无法在手机安装,那么App怎样管理业务方面的数据记录呢?其实Android早已内置了专门的数据库名为SQLite,它遵循关系数据库的设计理念,SQL语法类似于MySQL。不同之处在于,SQLite无须单独安装,因为它内嵌到应用进程当中,所以App无须配置连接信息,即可直接对其增删改查。由于SQLite嵌入到应用程序,省去了配置数据库服务器的开销,因此它又被归类为嵌入式数据库。
可是SQLite的数据库文件保存在手机上,开发者拿不到用户的手机,又该如何获取App存储的业务数据?比如用户的注册信息、用户的购物记录,等等。如果像Java Web那样,业务数据统一保存在后端的数据库服务器,开发者只要登录数据库服务器,就能方便地查询导出需要的记录信息。
手机端的App,连同程序代码及其内置的嵌入式数据库,其实是个又独立又完整的程序实体,它只负责手机上的用户交互与信息处理,该实体被称作客户端。而后端的Java Web服务,包括Web代码和数据库服务器,同样构成另一个单独运行的程序实体,它只负责后台的业务逻辑与数据库操作,该实体被称作服务端。客户端与服务端之前通过HTTP接口通信,每当客户端觉得需要把信息发给服务端,或者需要从服务端获取信息时,客户端便向服务端发起HTTP请求,服务端收到客户端的请求之后,根据规则完成数据处理,并将处理结果返回给客户端。这样客户端经由HTTP接口并借服务端之手,方能间接读写后端的数据库服务器(如MySQL),具体的信息交互过程如图2-10所示。
(1) manifests子目录,下面只有一个XML文件,即AndroidManifest.xml,它是App的运行配置文件。
(2) java子目录,下面有3个com.example.myapp包,其中第一个包存放当前模块的Java源代码,后面两个包存放测试用的Java代码。
(3) res子目录,存放当前模块的资源文件。res下面又有4个子目录:
——drawable目录存放图形描述文件与图片文件。
——layout目录存放App页面的布局文件。
——mipmap目录存放App的启动图标。
——values目录存放一些常量定义文件【例如字符串常量strings.xml、像素常量dimens.xml、 颜色常量colors.xml、样式风格定义styles.xml等】。
Gradle Scripts下面主要是工程的编译配置文件,主要有:
(1) build.gradle,该文件分为项目级与模块级两种,用于描述App工程的编译规则。
gradle:Gradle是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。
(2) proguard-rules.pro,该文件用于描述Java代码的混淆规则。
(3) gradle.properties,该文件用于配置编译工程的命令行参数,一般无须改动。
(4) settings.gradle,该文件配置了需要编译哪些模块。初始内容为include ‘:app’,表示只编译app模块。
(5) local.properties,项目的本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。
每个应用的根目录中都必须包含一个AndroidManifest.xml并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面
可见AndridManifest.xml的根节点为manifest, 它的package属性指定了该App的包名。manlfest 下面有个application节点,它的各属性说明如下:
Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项
任务。
注意到application下面还有个activity节点,它是活动页面的注册声明,只有在AndroidManifest.xml中正确配置了activity节点,才能在运行时访问对应的活动页面。初始配置的MainActivity正是App的默认主页,之所以说该页面是App主页,是因为它的activity节点内部还配置了以下的过滤信息:
以上的两种节点规则可能一开始不太好理解,读者只需记住默认主页必须同时配置这两种过滤规则即可。
利用XML标记描绘应用界面,使用Java代码书写程序逻辑。
把 App的界面设计与代码逻辑分开的好处:
利用XML标记描绘应用界面:
创建新的App页面:
完整的页面创建过程包括三个步骤:
创建 layout下的xml文件:
在values下的strings.xml文件中添加代码:
创建activity文件
在清单文件中注册:
从原来的activity中跳转到新建的activity中:
创建按钮
跳转需要点击事件:
发布运行:
更简便的创建activity的方法:
在清单文件中也配置了:
答案:1.USB调试的开关 2.原生开发 3.build.gradle 4.gradle 5.startActivity( )
答案:1.对 2.对 3.错(客户端程序) 4.对 5.错(放在drawable下)
答案:1.C 2.A D 3.C 4.D 5.A
答案:1.可以在android studio中快速的预览布局 2.同一个布局可以被多个代码逻辑复用 3.同一个代码逻辑可以被多个布局复用,提升代码的复用性