第二章 Android 基础--开发基础

文章目录

  • 1.使用真机调试运行
  • 2.Android开发涉及的编程语言
  • 3.工程目录结构
  • 4.编译配置文件 build.gradle
  • 5.清单文件
  • 6.界面显示与逻辑处理
  • 7.Activity创建与跳转
  • 8.练习题

本专栏主要在B站学习视频: B站Android视频链接
本视频范围:P9—P16

工程结构、设计规范、活动页面

1.使用真机调试运行

想要观察App的运行效果,有两种办法:

  • 在模拟器上运行App应用【90%选择】【可以更好模拟不同版本的环境】
  • 使用真实手机调试App【某些需要硬件的支持,比如 拍照】【运行起来比模拟器更快】

在真实手机上调试的时候:打开开发者选项、启动USB调试

  1. 使用数据线把手机连到电脑上
    手机的电源线拔掉插头就是数据线。数据线长方形的一端接到电脑的USB接口,即可完成手机与电脑的连接。
  2. 在电脑上安装手机的驱动程序
    一般电脑会把手机当作USB存储设备一样安装驱动,大多数情况会自动安装成功。如果遇到少数情况安装失败,需要先安装手机助手,由助手软件下载并安装对应的手机驱动。
  3. 打开手机的开发者选项并启用USB调试
    手机出厂后默认关闭开发者选项,需要开启开发者选项才能调试App。打开手机的设置菜单,进入“系统"→"关于手机"→版本信息"页面,这里有好几个版本项,每个版本项都使劲点击七、八下,总会有某个版本点击后出现"“你将开启开发者模式的提示。继续点击该版本开启开发者模式,然后退出并重新进入设置页面,此时就能在"系统’菜单下找到"开发者选项"或"开发人员选项"了。进入"开发者选项"页面,启用“开发者选项"和"USB调试"两处开关,允许手机通过USB接口安装调试应用。
  4. 将连接的手机设为文件传输模式,并允许计算机进行USB调试
    手机通过USB数据线连接电脑后,屏幕弹出如图2-1所示的选择列表,请求选择某种USB连接方式。这里记得选中"传输文件",因为充电模式不支持调试App。
    选完之后手机桌面弹出如图2-2所示的确认窗口,提示开发者是否允许当前计算机进行USB调试。这里勾选"始终允许使用这台计算机进行调试"选项,再点击右下角的确定按钮,允许计算机在手机上调试App。

在这里插入图片描述
选择传输文件

在这里插入图片描述

2.Android开发涉及的编程语言

App 开发主要有两大技术路线,分别是原生开发【谷歌官方的技术】和混合开发【与网页技术混合,可以跨平台,性能没有原生开发好】。
Android 的官方编程语言包括JavaKotlin

C/C++

  • 不管是ava还是Kotlin,它们都属于解释型语言,这类语言在运行之时才将程序翻译成机器语言,故而执行效率偏低。虽然现在手机配置越来越高,大多数场景的App运行都很流畅,但是涉及图像与音视频处理等复杂运算的场合,解释型语言的性能瓶颈便暴露出来。
  • 编译型语言在首次编译时就将代码编译为机器语言,后续运行无须重新编译,直接使用之前的编译文件即可,因此执行效率比解释型语言高。CIC++正是编译型语言的代表,它能够有效弥补解释型语言的性能缺憾,借助于JNI技术(Java Native Interface,即Java原生接口),Java代码允许调用C/C-++编写的程序。事实上,Android的SDK开发包内部定义了许多JNI接口,包括图像读写在内的底层代码均由C/C++编写,再由外部通过封装好的Java方法调用。
  • 不过Android系统的JNI编程属于高级开发内容,初学者无须关注JNI开发,也不要求掌握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所示。

3.工程目录结构

  • App工程分为两个层次,第一个层次是项目,另一个层次是模块。
  • 模块依附于项目,每个项目至少有一个模块,也能拥有多个模块。
  • 一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对
    应实际的App。

在这里插入图片描述

  • App项目下面有两个分类:app(代表app模块)、Gradle Scripts。
  • app下面有3个子目录,Gradle Scripts下面主要是工程的编译配置文件
    在这里插入图片描述
    在这里插入图片描述

(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的本地路径等。

4.编译配置文件 build.gradle

  • 项目级别的build.gradle指定了当前项目的总体编译规则。
  • 模块级别的 build.gradle对应于具体模块,每个模块都有自己的 build.gradle,它指定
    了当前模块的详细编译规则。

在这里插入图片描述
模块级别的 build.gradle:

在这里插入图片描述
在这里插入图片描述

5.清单文件

每个应用的根目录中都必须包含一个AndroidManifest.xml并且文件名必须一模一样。这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面

在这里插入图片描述

可见AndridManifest.xml的根节点为manifest, 它的package属性指定了该App的包名。manlfest 下面有个application节点,它的各属性说明如下:

  • android:allowBackup,是否允许应用备份。允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或者数据丢失后恢复应用,用户即可通过adb backup和adb restore来进行对应用数据的备份和恢复。为true表示允许,为false则表示不允许。
  • android:icon,指定App在手机屏幕上显示的图标。
  • android:label,指定App在手机屏幕上显示的名称。
  • android:roundlcon,指定App的圆角图标。
  • android:supportsRtl,是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序。为true表示支持,为false则表示不支持
  • android:theme,指定App的显示风格。

在这里插入图片描述
Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项
任务。

注意到application下面还有个activity节点,它是活动页面的注册声明,只有在AndroidManifest.xml中正确配置了activity节点,才能在运行时访问对应的活动页面。初始配置的MainActivity正是App的默认主页,之所以说该页面是App主页,是因为它的activity节点内部还配置了以下的过滤信息:
在这里插入图片描述

  • 其中action节点设置的android.intent.action.MAIN表示该页面是App的入口页面,启动App时会最先打开该页面。
  • 而category节点设置的android.intent.category.LAUNCHER决定了是否在手机屏幕上显示App图标,如果同时有两个activity节点内部都设置了android.intent.category.LAUNCHER,那么桌面就会显示两个App图标。

以上的两种节点规则可能一开始不太好理解,读者只需记住默认主页必须同时配置这两种过滤规则即可。

6.界面显示与逻辑处理

利用XML标记描绘应用界面,使用Java代码书写程序逻辑。

把 App的界面设计与代码逻辑分开的好处:

  • 使用XML文件描述APP界面,可以很方便地在Android Studio上预览界面效果。
  • 一个界面布局可以被多处代码复用,反过来,一个Java 代码也可能适配多个界面布局。

利用XML标记描绘应用界面:

在这里插入图片描述
展示效果:

在这里插入图片描述
在MainActivity中代码修改:

在这里插入图片描述
运行效果为:

在这里插入图片描述

7.Activity创建与跳转

创建新的App页面:

完整的页面创建过程包括三个步骤:

  • 在 layout目录下创建XML文件
  • 创建与XML文件对应的Java代码
  • 在AndroidManifest.xml中注册页面配置

创建 layout下的xml文件:

在这里插入图片描述
在这里插入图片描述
在values下的strings.xml文件中添加代码:
在这里插入图片描述
创建activity文件

在这里插入图片描述
在这里插入图片描述
在清单文件中注册:
在这里插入图片描述
从原来的activity中跳转到新建的activity中:
创建按钮
在这里插入图片描述
跳转需要点击事件:

在这里插入图片描述

发布运行:

在这里插入图片描述
点击:

在这里插入图片描述

更简便的创建activity的方法:

  • 依次选择右键菜单New→Activity→Empty Activity,弹出图示的页面创建窗口。
  • 输入各项信息后,单击窗口右下角的Finish按钮,即可完成新页面的创建动作。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在清单文件中也配置了:

在这里插入图片描述

8.练习题

在这里插入图片描述
答案: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.同一个代码逻辑可以被多个布局复用,提升代码的复用性

在这里插入图片描述
答案:先不要添加阿里云的仓库地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/41720.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DDOS百科:什么是 DDoS 攻击及如何防护DDOS攻击

一、什么是 DDoS 攻击? 当多台机器一起攻击一个目标,通过大量互联网流量淹没目标或其周围基础设施,从而破坏目标服务器、服务或网络的正常流量时,就会发生分布式拒绝服务(DDoS)攻击。 DDoS允许向目标发送指数级更多的请求&#…

什么是 XSS 攻击,攻击原理是什么

什么是 XSS 攻击? XSS(Cross-Site Scripting)攻击是一种常见的 Web 安全漏洞,其攻击目标是 Web 应用程序中的用户,攻击者通过在 Web 页面中植入恶意脚本,从而实现窃取用户敏感信息、篡改用户数据等目的。 …

一本通12951917:装箱问题

不知道说什么废话好了 题目 装箱问题 描述 有一个箱子容量为V(正整数,0<=V<=20000),同时有n个物品(0<n<=30),每个物品…

安卓进程间通信浅谈

Case: /Users/lucas/AndroidStudioProjects/aidldemo-master 一:操作系统 从操作系统原理去看,进程通信主要有三个方法:共享存储、消息传递、管道通信。 二:安卓中的IPC 进程间通信的几种方式:Intent(Bu…

华为产品测评官-开发者之声 - ModelArts 真实体验感想

华为产品测评官-开发者之声 - ModelArts 真实体验感想 我先是在6月17日参加了华为在深圳举办的开发者大会,后面看到群里发的"2023华为产品测评官-开发者之声"活动,简单看了一下体验活动的具体事情,感觉好玩…

超声医疗高压功率放大器ATA-4315技术参数

超声波检查或超声诊断,是一种非侵入性的医学检查方法,它利用了声波的高频振动来观察和评估人体内部的器官和组织。它基于不同密度和组织结构中传播的原理。通过将ultrasound(超声波)传递到身体的特定区域,并记录反射回来的声波,我…

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用

flutter开发实战-svga播放svgaplayer_flutter直播礼物特效等效果使用 最近开发过程中用到了SVGA进行播放动画,这里记录一下svgaplayer_flutter使用过程。svga可以做一些非常精美的动画,包括直播的刷礼物(火箭、跑车特效动画)等等。 效果图如下 一、SVG…

分区类型ID一键变身!快速改变分区类型ID的简单方法

分区类型ID是什么? 想要改变分区类型ID,先得明白分区类型ID是什么。大多数电脑用户可能只熟悉分区和分区类型,实际上有5种分区类型:主分区、可扩展固件接口(EFI)、扩展分区、逻辑分区和Microsoft保留分…

百分点科技苏萌受邀出席首届全国统计与数据科学联合会议

7月11-13日,首届全国统计与数据科学联合会议在北京举行,会议由中国现场统计研究会、中国数学会概率统计分 会、全国工业统计学教学研究会和中国商业统计学会联合主办,北京大学统计科学中心承办,旨在促进统计与数据科学领域发展&a…

vuecli5.x 配置图片输出为base64

解释:webpack的默认配置是小于一定的文件大小就要将图片转为base64, 所以尽量将这个阈值调大你的图片就可以转为base64; 当然这种做法不好, 会导致代码文件变大, 不过为了满足需求也没得办法。这年头大家都用 vite 了, 网上没有 vuecli5.x 这方面的记录, 写篇文章记…

Java经典面试解析:服务器卡顿、CPU飙升、接口负载剧增

01 线上服务器CPU飙升,如何定位到Java代码 解决这个问题的关键是要找到Java代码的位置。下面分享一下排查思路,以CentOS为例,总结为4步。 第1步,使用top命令找到占用CPU高的进程。 第2步,使用ps –mp命令找到进程下…

Flink 在新能源场站运维的应用

摘要:本文整理自中南电力设计院工程师、注册测绘师姚远,在 Flink Forward Asia 2022 行业案例专场的分享。本篇内容主要分为四个部分: 建设背景 技术架构 应用落地 后续及其他 点击查看原文视频 & 演讲PPT 一、建设背景 建设背景主要…

农产品后台管理系统(一)——项目总览

后端技术栈 SpringBoot2.xMybatis-plusMysql8.0redisjsoup(测试爬取数据) 前端技术栈 Vue3EchartsAxios前端组件:element-china-area-data、element-plus 项目概览截图 登录界面 注册界面 农产品发布界面 用户管理界面 用户画像界面 订单…

centos 安装pyzbar

需求: 运行程序报错 ImportError: Unable to find zbar shared library 进程: 直接使用yum 安装 yum install python-devel && yum install zbar-devel 有时候会能成功,大多数时候python-devel 能成功但是 zbar-devel 会失败 下载…

国密算法概述、及算法的集成应用(sm2、sm3、sm4)

国密算法概述、及算法的集成应用(sm2、sm3、sm4) 一、概述二、分类概述3.1、SM1对称密码3.2、SM2椭圆曲线公钥密码算法3.3、SM3杂凑算法3.4、SM4对称算法3.5、SM7对称密码3.6、SM9标识密码算法3.7、ZUC祖冲之算法 三、集成SM2加解密四、集成SM3加密、验签…

vue3和gin框架实现简单的断点续传

vue3和gin框架实现简单的断点续传 前端代码 Test.vue <template><div><inputtype"file"ref"uploadRef"change"upload"multiple/><templatev-for"item in fileList":key"item.key"><br><…

Grafana_数据可视化工具

目录 一、简介 二、安装部署 1、下载 2、安装 3、启用 三、使用简介 1、添加数据源 2、创建DashBoard 3、查看dashboard 4、选择查看的时间段 5、阈值颜色控制 源码等资料获取方法 一、简介 Grafana是一个跨平台开源的纯html/js编写的度量分析和可视化工具&#x…

如何应用MySQL高阶语句(子查询)

目录 一、SQL高阶语句 常用查询 关键字排序 升序降序 按区域进行查找 分组统计 limit限制显示结果条目 As别名设置 使用场景 嵌套克隆复制表结构 二、通配符 三、子查询 insert子查询 update子查询 delete子查询 Exists检测 一、SQL高阶语句 常用查询 对于MyS…

飞行动力学 - 第11节-纵向静稳定性及各部件贡献 之 基础点摘要

飞行动力学 - 第11节-纵向静稳定性及各部件贡献 之 基础点摘要 1. 气流角2. 操纵面偏角3. 系数的符号4. 纵向、横向、航向稳定性5. 纵向静稳定性5.1 定义5.2 准则5.3 举例5.4 假设5.5 分析5.5.1 机身贡献5.5.2 机翼贡献5.5.3 尾翼贡献 6. 参考资料 1. 气流角 迎角&#xff1a;…

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden

成功解决wget下载报错 : wget HTTP request sent, awaiting response... 403 Forbidden 问题描述解决方案原理什么是User Agent解决 问题描述 –2023-07-15 02:32:57-- https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh Resolving mi…