Android
Android应用开发
1. 开发环境搭建
下载Android studio,提示下载sdkAPI32/33,创建新项目,选择empty activity。
创建虚拟机:点击右侧Device Manager,点击create device,选择界面外观与系统。创建成功后点击小箭头,开始运行虚拟机。
2. App开发基础
Gradle解释:自动化构建工具
2.1 App开发特点
App的运行环境
App的开发语言
App连接的数据库
**困境:**手机上的App不能直联MySQL、Oracle等。(数据库软件也需要安装到操作系统,MySQL不提供Android系统的安装包)
机制:
1.客户端(App代码、SQLite):负责手机上的用户交互与信息处理,面向用户,用户与APP通过屏幕交互。
2.服务端(Java Web:后端代码、MySQL):负责后台的业务逻辑和数据库操作,面向App,服务端与客户端通过HTTP接口交互。
3.客户端与服务端之间通过HTTP接口通信:
客户端——(发送信息/获取信息)——>服务端,客户端向服务端发起HTTP请求,服务端收到请求,完成数据处理,将结果返回给客户端。
4…多(客户端)对一(服务端)
**总结:**客户端可以操作内置数据库SQLite,不能操作企业级数据库MySQL;客户端通过HTTP接口与服务端进行通信,由服务端操作数据库服务器。
2.2 App工程结构
2.3 App设计规范
2.4 App的活动页面
创建新的App页面
创建XML文件
res-layout-new-XML-layout XML file
创建Java代码
java-new-java class
- 继承AppCompatActivity
- onCreate() 选择一个参数
- setContentView(R.layout.activity_main2) 指定布局
注册页面信息
在AndroidManifest文件中注册该页面:
application:
<activity android:name=".MainActivity2"/>
快速生成页面源码
一键完成上述全部操作:
java-new-activity-empty activity
跳到另一个页面
XML
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转"/>
JAVA-MainActivity
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
//联系上下文
intent.setClass(MainActivity.this,MainActivity2.class);
startActivity(intent);
}
});
练习题
1.填空题
(1)usb调试
(2)原生开发
(3)build.gradle
(4)Gradle
(5)startActivity(源页面.this,跳转页面.class)
2.判断题
对
对
错 客户端
对 一个项目至少有一个模块,可以有多个
错 drawable
3.选择题
C
D +A 处于锁屏状态/选择了充电模式
C App可以直连的数据库
D XML
A
4.简答题
1.一个界面可以被多个Java代码复用,2.一个Java代码可以适用于多个界面 3. 方便预览
5.动手练习
3. 简单控件
3.1 文本显示
设置文本内容
方式1:XML文件中使用android:text设置文本
android:text="你好,世界!"
方式2:Java代码中使用setText方法设置文本
TextView tv_hello = findViewById(R.id.tv_hello);
tv_hello.setText("hello,world!");
android:gravity setGravity(int) 当文字小于视图,指定如何对齐文本视图的X或Y轴。
没有layout_gravity属性
引用字符串资源
问题:提示Hardcoded string “你好,世界!”, should use @string resource
解释:最好将常量写进values-string文件,方便一次性更改多个常量。(类似于变量)
strings.xml:<string name="hello">你好,世界!</string> //hello为变量名,你好,世界!为具体内容
XML:android:text="@string/hello"
Java:tv_hello.setText(R.string.hello)
设置文本大小
方式1:XML文件中使用android:textSize,需要指定单位
px | 手机屏幕的最小显示单位,与设备的显示屏有关;相同尺寸的屏幕,越清晰,则像素密度越高,以px计量的分辨率越大。 |
---|---|
dp | 与设备无关的显示单位,只与屏幕的尺寸有关;相同尺寸的屏幕以dp计量的分辨率是相同的。 |
sp | 专门用来设置字体大小,系统中可以调整/setTextSize默认使用该单位 |
方式2:Java代码中使用setTextSize方法
补充:
px(pixel) | 基本单位,单个像素大小不定,跟随屏幕大小和像素数量变化 |
---|---|
resolution(分辨率) | 屏幕的垂直和水平方向的像素数量 |
dpi(像素密度) | 屏幕上每英寸距离中有多少个像素点 |
density(密度) | 屏幕上每平方英寸中含有的像素点 |
dip/dp(设备独立像素) | 长度单位,同一个单位在不同的设备上有不同的显示效果 |
实验:
对于相同分辨率的手机,屏幕越大,用DP的组件占用屏幕比例越小;
对于相同尺寸的手机,分辨率大小影响用DP的组件的占用屏幕比例。
——>由此可知,用DP的组件占用屏幕比例只与手机尺寸有关。
设置文本颜色
方式一:Java代码
系统自带:Color.Green
编码规则:0xFF00FF00
直接引用:
方式二:XML
编码规则:#FF00FF00
直接引用:
设置文字背景颜色:
XML: android:background=""
Java: tv_values.setBackgroundColor();
3.2 视图基础
设置视图宽高
XML:
三种取值:
match_parent 与上级视图保持一致
wrap_content 与内容自适应
以dp为单位
marginTop 间距
Java代码:
设置视图间距
####设置视图对齐方式
当前相对于上级视图 layout_gravity
下级视图相对于当前视图 gravity
3.3 常用布局
线性布局
ctrl+shift+/
相对布局
网格布局
让文字居中,使用gravity
android:layout_columnWeight="1" 列权重,与线性结构不同。
滚动布局
3.4 按钮触控
按钮控件
点击事件和长按事件
禁用与恢复按钮
(Button)v.getText() can't reslove the method getText in view
((Button)v).getText() 加了括号解决了问题,注意。
3.5 图像显示
图像视图
加入图片的方式:将图片复制到 D:\AndroidStudioProjects\MyApplication\chapter03\src\main\res\drawable 路径下即可
图像按钮
同时展示文本与图像
Button 指定图片和文字的间距:drawable_padding
padding 指定当前视图和下级视图的间距
<style name="Theme.MyApplication" parent="Theme.MaterialComponents.DayNight.DarkActionBare">
.Bridg 加入,消去默认背景颜色
3.6 实战项目:计算器
滚动视图
<ScrollView>
线性布局
<LinearLayout>
</LinearLayout>
</ScrowllView>
<ScrollView>
<LinearLayout>
</LinearLayout>
</ScrowllView>
4. 活动Activity
4.1 启停活动页面
Activity启动与结束
Activity的生命周期
启动模式
默认启动模式
栈顶复用模式
栈内复用模式
全局唯一模式
动态设置启动模式
FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_SINGLE_TOP
FLAG_ACTIVITY_CLEAR_TOP
4.2 在活动之前传递消息
显式Intent和隐式Intent
向下一个Activity发送数据
向上一个Activity返回数据
4.3 为活动补充附加信息
利用资源文件配置字符串
利用元数据传递配置信息
给应用页面注册快捷方式
体验与总结
对于复刻代码,重点是不要有差误。一个大小写,一个数据,都可能导致程序无法运行;
5. 中控组件
5.1 图形定制
图形
形状图形
九宫格图形
状态列表图形
5.2 选择按钮
复选框
开关按钮
单选按钮
5.3 文本输入
编辑框 EditText
登录 用户名;密码
<EditText 默认文字hint inputType="text/password"
边框消失 background=“@null”
自定义边框
<selector
focus时:
定义形状 <shape solid stroke padding corner
没有focus:
改变边框颜色
焦点变更监听器
校验手机号码长度,不满11位不通过
未满十一位就点击密码框,弹出提示文字,自动跳回手机输入框。
maxLength
setOnFocusChangeListener
先进行判断,是否满11位
不满,则请求焦点,显示提示信息。
文本变化监听器
长度达标隐藏键盘 自动关闭软键盘
六位/十一位输入对了,键盘收起
addTextChangedListner
afterTextChanged
工具包
5.4 对话框
提醒对话框
AlertDialog.Builder
日期对话框
DatePicker
日期选择器
时间对话框
5.5 实战项目:找回密码
6. 数据存储
6.1 共享参数SharedPreferences
轻量级存储工具,存储结构键值对。
XML文件
保存路径是:/data/data/应用包名/shared_prefs/文件名.xm
使用场景:
数据单一且独立;文本类型数据;持久保存的数据。
实际开发中,个性化设置、用户行为信息、临时需要保存的片段信息。
共享参数的用法
实现记住密码功能
利用设备浏览器寻找共享参数文件
6.2 数据库SQLite
SQL的基本语法
数据库管理器
数据库帮助器
优化记住密码功能
6.3 存储卡的文件操作
私有存储文件与公共存储文件
在存储卡上读写文本文件
在存储卡上读写图片文件
6.4 应用组件Application
Application生命周期
利用Application操作全局变量
利用Room简化数据库操作
6.5 实战项目:购物车
##7. 内容共享
###7.1 在应用之间共享数据