Andriod学习笔记(一)

写在前面的话

  • App开发的编程语言
    • Java和Kotlin
    • XML
  • App连接的数据库
  • App工程目录结构
    • 模块级别的编译配置文件
    • 清单文件
  • 界面显示与逻辑处理

安卓是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备。
Mininum SDK表示安卓该版本以上的设备都可以运行该Android代码。
Android采用Log工具打印日志:
Log.e:表示错误信息,比如可能导致程序崩溃的异常
Log.w:表示警告信息
Log.i:表示一般信息
Log.d:表示调试信息,可把程序运行时的变量值打印出来,方便跟踪调试
Log.v:表示冗余信息

App开发的编程语言

Java和Kotlin

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

XML

Android的布局文件使用XML来写,它是一种命令式的UI。
XML全称Extensible Markup Language,即可扩展性标记语言,严格来说,XML并非编程语言,只是一种标记语言。它类似于HTML,利用各种标签表示页面元素,以及各元素之间的层级关系及其排列组合。
每个XML标签都是独立的控件对象,标签内部的属性以“android:”打头,表示这是标准的安卓属性,各属性分别代表控件的某种规格。

App连接的数据库

Java编程是通过JDBC连接数据库进行增删改查,这个数据库可能是MySQL,也可能是Oracle,还可能是SQL Server。

问题1:企业数据库无法在手机上安装,那么App怎样管理业务方面的数据记录?
Android内置了专门的数据库名为SQLite,它遵循关系数据库的设计理念,SQL语法类似于MySQL。不同之处在于,SQLite无须单独安装,因为它内嵌到应用进程当中,所以App无需配置连接信息,即可直接对其增删改查。由于SQLite嵌入到应用程序,省去了配置数据库服务器的开销,因此它又被归类为嵌入式数据库。

问题2:SQLite的数据库文件保存在手机上,开发者拿不到用户的手机,又该如何获取App存储的业务数据?
手机端的App,连同程序代码及其内置的嵌入式数据库,其实是个又独立又完整的程序实体,它只负责手机上的用户交互与信息处理,该实体被称作客户端
而后端的Java Web服务,包括Web代码和数据库服务器,同样构成另一个独立运行的程序实体,它只负责后台的业务逻辑与数据库操作,该实体被称作服务端
客户端与服务端之间通过HTTP接口通信,每当客户端觉得需要把信息发给服务端,或者需要从服务端获取信息时,客户端便向服务端发起HTTP请求,服务端收到客户端的请求之后,根据规则完成数据处理,并将处理结果返回给客户端。这样客户端经由HTTP接口并借服务器之手,方能间接读写后端的数据库服务器。

App工程目录结构

在这里插入图片描述
App工程分为两个层次,第一个层次是项目,另一个层次是模块。
模块依赖于项目,每个项目至少有一个模块,也能拥有多个模块。
一般所言的“编译运行App”,指的是运行某个模块,而非运行某个项目,因为模块才对应实际的App。
在这里插入图片描述
App的工程目录结构有两个分类(左上角Android视图下),一个是app(代表app模块);另一个是Gradle Scripts。
app下的3个子目录:

  1. manifest:只有一个XML文件,即AndroidManifest.xml,是App的运行配置文件。
  2. java:第一个包存放当前模块的java源代码,后面两个包存放测试用的java代码
  3. res:存放当前模块的资源文件,包含四个子目录:
  • drawable目录存放图形描述文件与图片文件
  • layout目录存放app页面的布局文件
  • mipmap目录存放app的启动图标
  • values目录存放一些常量定义文件,如:字符串常量、像素常量、颜色常量和样式风格定义常量

注:矢量图放大后不会失真,位图会。

Gradle Scripts是工程的编译配置文件,主要有:

  • build.gradle:分为项目级和模块级,用于描述App工程的编译规则
  • proguard-rules.pro:描述Java代码的混淆规则,有利于提高安卓应用的安全性,相当于某种形式的加密
  • gradle.properties:用于配置编译工程的命令行参数(global级别的定义了网络代理的IP地址和端口号)
  • settings.gradle:配置了需要编译哪些模块,初始内容为include‘:app’,表示只编译app模块。
  • local.properties:本地配置文件,它在工程编译时自动生成,用于描述开发者电脑的环境配置,包括SDK的本地路径、NDK的本地路径等。

注:
Project级别就是工程级别的,全局的;Module级别就是模块级别的,局部的
例如:
项目级别的build.gradle指定了当前项目的总体编译规则
模块级别的build.gradle对应于具体模块,每个模块都有自己的build.gradle,它指定了当前模块的详细编译规则

模块级别的编译配置文件

plugins {id 'com.android.application'
}android {namespace 'com.example.experiment01'//指定编译用的SDK版本号,对应的有Android的版本号compileSdk 34defaultConfig {//指定该模块的应用编号,也就是app的包名,是应用的唯一身份标识//要和清单文件中manifest标签的package属性保持一致applicationId "com.example.experiment01"//指定App适合运行的最小SDK版本号,minSdk 26//指定目标设备的SDK版本号,表示APP最希望在哪个版本的Android上运行targetSdk 33//指定APP的应用版本号versionCode 1//指定APP的应用版本名称versionName "1.0"//单元测试testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled false//指定混淆规则的文件proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'}}compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}
}
//指定APP编译的依赖信息
dependencies {//指定编译Android的高版本支持库,如AppCompatAcitivity必须指定编译appcompat库implementation 'androidx.appcompat:appcompat:1.6.1'implementation 'com.google.android.material:material:1.10.0'implementation 'androidx.constraintlayout:constraintlayout:2.1.4'//指定单元测试编译用的junit版本号testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.5'androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
}

注:Gradle工具的版本配置在gradle\wrapper\gradle-wrapper.properties,每个版本的Android Studio都有对应的Gradle版本,只有二者的版本正确对应,App工程才能正确编译。

清单文件

每个应用的根目录下都必须包含一个AndroidManifest.xml,并且文件名必须一模一样。
这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示页面。
根节点manifest下面的application节点的属性说明如下:

  • android:allowBackup:是否允许应用备份,允许用户备份系统应用和第三方应用的apk安装包和应用数据,以便在刷机或数据丢失后恢复应用。
  • android:icon:手机屏幕上显示的图标
  • android:label:手机屏幕上显示的名称
  • android:roundIcon:App的圆角图标
  • android:supportsRtl:是否支持阿拉伯语/波斯语这种从右往左的文字排列顺序
  • android:theme:App的显示风格

application下面的activity节点(activity是包含可执行操作的界面),是活动页面的注册声明,只有在AndroidManifest.xml中正确配置了activity节点,才能在运行时访问对应的活动页面。
初始配置的MainActivity正是App的默认主页,它的节点内部还配置两种必备的过滤规则。

  • action节点设置的android.intent.action.MAIN表示该页面是app的入口页面,启动app时最先打开的页面
  • category节点设置的android.intent.category.LAUNCHER决定了在手机屏幕上显示图标,如果同时有两个activity节点内部都设置了android.intent.category.LAUNCHER,那么桌面就会显示两个app图标。
<activityandroid:name=".MainActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>

界面显示与逻辑处理

利用XML标记描绘应用界面,使用Java代码书写程序逻辑
问题1:这种界面设计与逻辑处理分开的好处?
使用XML文件描述APP界面,可以很方便地在Android Studio上预览界面效果。
一个界面布局可以被多处代码复用,一个Java代码也可能适配多个界面布局。

注:xmlns也就是xml namespace,指明了该节点下哪些属性可用。

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Openresty中使用lua语言向请求浏览器返回请求头User-Agent里边的值

可以参考《Linux学习之Ubuntu 20.04在https://openresty.org下载源码安装Openresty 1.19.3.1&#xff0c;使用systemd管理OpenResty服务》安装Openresty。 然后把下边的内容写入到openresty配置文件/usr/local/openresty/nginx/conf/nginx.conf&#xff08;根据实际情况进行选…

基于SSM的网络安全宣传网站设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

医疗机构又进化了,一招搞定UPS设备太爽了!

在现代社会中&#xff0c;能源供应的可靠性至关重要&#xff0c;不间断电源&#xff08;UPS&#xff09;系统是维持关键设备运行的关键组成部分。UPS监控是一种重要的技术&#xff0c;用于实时监测UPS的性能、电池状态和电力质量。 客户案例 四川某医院是一家大型医疗机构&…

应对广告虚假流量,app广告变现该如何风控?

移动广告市场中的虚假流量一直是困扰各移动应用厂商的难题&#xff0c;广告作为app商业化变现最为直接快捷的途径&#xff0c;也引申出了流量作弊与反作弊的纷争。 根据《2021中国异常流量报告》&#xff0c;2021年中国品牌广告市场因异常流量造成的损失约为326亿人民币&#…

适合学生写作业的台灯有哪些?高品质学生读写台灯推荐

不得不说如今我国青少年儿童的近视率还是非常高的&#xff0c;据国家卫健委疾控局数据&#xff0c;我国儿童青少年总体近视率为52.7%&#xff0c;其中6岁儿童为14.3%&#xff0c;小学生为35.6%&#xff0c;初中生为71.1%&#xff0c;高中生为80.5%&#xff0c;造成近视的原因不…

2. redis常见数据类型

一、Redis 数据类型 Redis支持五种数据类型&#xff1a;string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xff08;列表&#xff09;&#xff0c;set&#xff08;集合&#xff09;及zset(sorted set&#xff1a;有序集合…

1800*C. Table Decorations(贪心 || 二分)

Problem - 478C - Codeforces 解析&#xff1a; 做法一&#xff1a;二分&#xff0c;显然左右边界为 0 和 总数量除以3。check时mid&#xff0c;任意两项之和都不能小于mid 做法二&#xff1a;贪心&#xff0c;当数量最大的气球数量的一半小于另外两种颜色气球的数量之和&#…

[Python]图片转字符画——这就是我的表情!!!!!!

背景 偶尔看到一些视频&#xff0c;他们把图片转字符画&#xff0c;平常也没有去关注&#xff0c;今天来捣鼓一下。 研究了一下还超级简单的&#xff0c;都是调用别人写好的框架。 网上也有很多教学。 代码实现 from PIL import Image # 表示字符颜色&#xff0c;由深到浅&am…

阿里云ModelScope 是一个“模型即服务”(MaaS)平台

简介 项目地址&#xff1a;https://github.com/modelscope/modelscope/tree/master ModelScope 是一个“模型即服务”(MaaS)平台&#xff0c;旨在汇集来自AI社区的最先进的机器学习模型&#xff0c;并简化在实际应用中使用AI模型的流程。ModelScope库使开发人员能够通过丰富的…

浅谈智能型电动机控制器在斯里兰卡电厂中的应用

摘要&#xff1a;传统的低压电动机保护是通过继电保护二次回路实现&#xff0c;但是我们结合电厂辅助控制设备的特点及其控制要求&#xff0c;推荐ARD2F智能型电动机控制器。以下综合介绍ARD2F智能型电动机控制器产品的特点及其智能化保护、测量、控制和通讯等。 Abstract: Th…

ppt录屏没有声音?超实用教程来了!

随着信息技术的发展&#xff0c;ppt已经成为工作中必不可少的工具。无论是工作报告、项目展示还是学术交流&#xff0c;都离不开ppt的辅助。屏幕录制功能是ppt的一个重要特性&#xff0c;可以帮助用户方便地录制幻灯片演示&#xff0c;但在使用过程中&#xff0c;有时会遇到ppt…

ubuntu配置yolov5环境

本文硬件平台为工控机&#xff0c;系统环境为ubuntu18 配置yolov5步骤 1.下载pytorch和torchvision软件包 由于在线安装容易出现安装失败&#xff0c;所以本文使用的是本地安装。本文是基于miniconda安装的&#xff0c;miniconda安装参考之前的博客&#xff1a;ubuntu中安装m…

微信小程序报错request:fail -2:net::ERR_FAILED(生成中间证书)

微信小程序报错request:fail -2:net::ERR_FAILED-生成中间证书 前言一、检查网站ssl证书二、生成证书方法1.获取中间证书手动合并1.进入网站&#xff1a;[https://www.myssl.cn/tools/downloadchain.html](https://www.myssl.cn/tools/downloadchain.html)2.点击下一步3.手动合…

C++教程(2)

C 环境设置 本地环境设置 如果您想要设置 C 语言环境&#xff0c;您需要确保电脑上有以下两款可用的软件&#xff0c;文本编辑器和 C 编译器。 文本编辑器 这将用于输入您的程序。文本编辑器包括 Windows Notepad、OS Edit command、Brief、Epsilon、EMACS 和 vim/vi。 文…

uniapp:幸运大转盘demo

<template><view class"index"><image src"../../static/img/158.png" mode"" class"banner"></image><view class"title">绿色积分加倍卡拿到手软</view><almost-lottery :lottery…

招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

功能描述 1、门户管理&#xff1a;所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含&#xff1a;招标公告、非招标公告、系统通知、政策法规。 2、立项管理&#xff1a;企业用户可对需要采购的项目进行立项申请&#xff0c;并提交审批&#xff0c;查看所…

cuML机器学习GPU库

目录 一、开始安装 1、创建虚拟环境 2、激活该虚拟环境 3、安装cuML 4、安装ipykernel 5、在jupter上使用&#xff0c;所以需要配置一下新的内核 二、调试 1、原始机器学习库运行 2、cuml库运行 以下安装教程为基于Linux系统&#xff0c;cuda版本为11.3.109、驱动530.…

智能机场系统:打造出行体验的未来

随着航空业的迅猛发展&#xff0c;机场作为出行的重要枢纽&#xff0c;必须不断提升自身的服务质量和效率。智能机场系统应运而生&#xff0c;为旅客提供更加便捷、智能化的出行体验。本文将从技术应用、服务优化和安全保障三个方面&#xff0c;全面介绍智能机场系统的特点和优…

早安问候语早安心语,别把人生想太难,人生需要鼓励

1、别把人生想的太难&#xff0c;人生需要几分自我的鼓励&#xff0c;不管在什么时候&#xff0c;要有几分信念和信心&#xff0c;生活少不了哭哭笑笑。青山绿水依然在&#xff0c;来来往往人不同&#xff0c;要学会看得惯&#xff0c;还要学会看得开&#xff0c;你内心的平坦是…