Android
2022-10-02 22:06:07 0 举报
AI智能生成
Android基础总结
作者其他创作
大纲/内容
数据存储
共享参数ShardPreferences
共享参数的用法
SharedPreferences 是Android的一个轻量级存储工具,采用的存储结构是Key-Value的 键值对方式
共享参数的存储介质是符合XML规范的配置文件。保存路径是:/data/data/应用包名/s hared_prefs/文件名.xml
使用场合
简单且孤立的数据
文本形式的数据
需要持久化存储的数据。在App退出后再次启动时,之前保存的数据仍然有效
利用设备浏览器查找共享参数文件
共享参数的文件路径为“/data/data/应用包名/shared_prefs/***.xml”,单击Android Studio右下角的竖排标签“Device File Explorer”,即可打开设备文件浏览器
数据库SQLite
SQL的基本语法
标准的SQL语句分为三类:数据定义、数据操纵和数据控制
SQLite的数据定义语言(DDL)
创建表格,格式为“CREATE TABLE IF NOT EXISTS 表格名称 (以逗号分隔的各字段定义);”
删除表格,格式为“DROP TABLE IF EXISTS 表格名称;”
修改表结构,格式为“ALTER TABLE 表格名称 修改操作;”
SQLite只支持增加字段,不支持修改字段,也不支持删除字段
SQLite的数据操纵语言(DML)
添加记录,格式为“INSERT INTO 表格名称 (以逗号分隔的字段名列表) VALUES (以逗号分隔的字段值列 表);”
删除记录,格式为“DELETE FROM 表格名称 WHERE 查询条件;”
修改记录,格式为“UPDATE 表格名称 SET 字段名=字段值 WHERE 查询条件;”
查询记录,格式为“SELECT 以逗号分隔的字段名列表 FROM 表格名称 WHERE 查询条件;”
SQLite是一种小巧的嵌入式数据库,由于它属于轻型数据库,不涉及复杂的数据控制操 作,因此App开发只用到数据定义和数据操纵两类SQL
数据库管理器SQLiteDatabase
管理类,用于数据库层面的操作
openDatabase:打开指定路径的数据库
isOpen:判断数据库是否已打开
close:关闭数据库
getVersion:获取数据库的版本号
setVersion:设置数据库的版本号
事务类,用于事务层面的操作
beginTransaction:开始事务
setTransactionSuccessful:设置事务的成功标志
endTransaction:结束事务
数据处理类,用于数据表层面的操作
execSQL:执行拼接好的SQL控制语句
delete:删除符合条件的记录
update:更新符合条件的记录
insert:插入一条记录
query:执行查询操作,返回结果集的游标
rawQuery:执行拼接好的SQL查询语句,返回结果集的游标
数据帮助器SQLiteOpenHelper
SQLiteOpenHelper是Android提供的数据库辅助工具,用于指导开发者进行SQLite的合 理使用
新建一个继承自SQLiteOpenHelper的数据库操作类,提示重写onCreate和onUpgrade两个方 法
提供对表记录进行增加、删除、修改、查询的操作方法
存储卡的文件操作
私有存储空间与公共存储空间
获取公共空间的存储路径,调用的是Environment类的getExternalStoragePublicDirect ory方法
获取应用私有空间的存储路径,调用的是getExternalFilesDir方法
在存储卡上读写文本文件
FileOutputStream用于写文件
FileInputStream用于读文件
在存储卡上读写图片文件
Android 的位图工具是Bitmap,App读写Bitmap可以使用性能更好的BufferedOutputS tream和BufferedInputStream
Android还提供了BitmapFactory工具用于读取各种来源的图片
decodeResource:该方法可从资源文件中读取图片信息
decodeFile:该方法可将指定路径的图片读取到Bitmap对象
decodeStream:该方法从输入流中读取位图数据
应用组件Application
Application的生命周期
在App运行过程中有且仅有一个Application对象贯 穿整个生命周期
利用Application操作全局变量
写一个继承自Application的类MainApplication。该类要采用单例模式,内部声明自身类的一个 静态成员对象,然后提供该静态对象的获取方法getInstance
在Activity中调用MainApplication的getInstance方法,获得MainApplication的一个静态对象, 通过该对象访问MainApplication的公共变量和公共方法
在AndroidManifest.xml中注册新定义的Application类名,即在application节点中增 加android:name属性,值为“.MainApplication”
中级控件
图形定制
图形Drawable
Drawable 类型表达了各种各样的图形,包括图片、色块、画板、背景等
包含图片在内的图形文件放在res目录的各个drawable目录下,其中drawable目录一般 保存描述性的XML文件,而图片文件一般放在具体分辨率的drawable目录下
各视图的background属性、ImageView 和 ImageButton的src属性、TextView和Butto n四个方向的drawable***系列属性都可以引用图形文件
形状图形
Shape图形又称形状图形,它用来描述常见的几何形状,包括矩形、圆角矩形、圆形、椭 圆等等
形状图形的定义文件是以shape标签为根节点的XML描述文件,它支持四种类型的形状
rectangle:矩形。默认值
oval:椭圆。此时corners节点会失效
line:直线。此时必须设置stroke节点,不然会报错
ring:圆环
规格定义
size(尺寸),它描述了形状图形的宽高尺寸
stroke(描边),它描述了形状图形的描边规格
corners(圆角),它描述了形状图形的圆角大小
solid(填充),它描述了形状图形的填充色彩
padding(间隔),它描述了形状图形与周围边界的间隔
gradient(渐变),它描述了形状图形的颜色渐变
状态列表图形
状态列表图形不仅用于按钮控件,还可用于其他拥有多种状态的控件
属性名称
state_pressed
是否按下,适用按钮Button
state_checked
是否勾选,适用复选框CheckBox、单选按钮RadioButton
state_focused
是否获取焦点,适用文本编辑框EditText
state_selected
是否选中,各控件通用
选择按钮
复选框CheckBox
CompoundButton类是抽象的复合按钮,由它派生而来的子类包括:复选框CheckBox、 单选按钮RadioButton以及开关按钮Switch
CompoundButton 在 XML 文件中主要使用两个属性
checked:指定按钮的勾选状态,true表示勾选,false表示未勾选。默认未勾选
button:指定左侧勾选图标的图形资源。如果不指定就使用系统的默认图标
CompoundButton 在 Java 代码中主要使用下列4种方法
setChecked:设置按钮的勾选状态
setButtonDrawable:设置左侧勾选图标的图形资源
setOnCheckedChangeListener:设置勾选状态变化的监听器
isChecked:判断按钮是否勾选
开关按钮Switch
XML属性
textOn:设置右侧开启时的文本
textOff:设置左侧关闭时的文本
track:设置开关轨道的背景
thumb:设置开关标识的图标
仿iOS的开关按钮
借助状态列表图形StateListDrawable,分别定义已选中时候的“开”图形,以及未选中 时候的“关”图形
然后把CheckBox控件的background属性设置为该状态图形
单选按钮RadioButton
RadioGroup实质上是个布局,同一组RadioButton都要放在同一个RadioGroup节点下。 除了RadioButton,也允许放置其他控件
属性
check:选中指定资源编号的单选按钮
getCheckedRadioButtonId:获取选中状态单选按钮的资源编号
setOnCheckedChangeListener:设置单选按钮勾选变化的监听器。
文本输入
编辑框EditText
属性
inputType:指定输入的文本类型。若同时使用多种文本类型,则可使用竖线“|”把多种文本类 型拼接起来
text:文本
textPassword:文本密码。显示时用圆点“·”代替
number:整型数
numberSigned:带符号的数字。允许在开头带负号“-”
numberDecimal:带小数点的数字
numberPassword:数字密码。显示时用圆点“·”代替
datetime:时间日期格式。除了数字外,还允许输入横线、斜杆、空格、冒号
date:日期格式。除了数字外,还允许输入横线“-”和斜杆“/”
time:时间格式。除了数字外,还允许输入冒号“:”
maxLength:指定文本允许输入的最大长度
hint:指定提示文本的内容
textColorHint:指定提示文本的颜色
焦点变更监听器
编辑框点击两次后才会触发点击事件,因为第一次点击只触发焦点变更事件,第二次点击 才触发点击事件
若要判断是否切换编辑框输入,应当监听焦点变更事件,而非监听点击事件
调用编辑框对象的setOnFocusChangeListener方法,即可在光标切换之时(获得光标和 失去光标)触发焦点变更事件
文本变化监听器
调用编辑框对象的 addTextChangedListener 方法
文本监听器的接口名称为 TextWatcher,该接口提供了3个监控方法
beforeTextChanged:在文本改变之前触发
onTextChanged:在文本改变过程中触发
afterTextChanged:在文本改变之后触发
对话框
提醒对话框AlertDialog
AlertDialog借 助建造器 AlertDialog.Builder 才能完成参数设置
调用建造器的 create 方法生成对话框实例,再调用对话框实例的show方法,在页面上弹 出提醒对话框
日期对话框DatePickerDialog
DatePickerDialog 相当于在 AlertDialog 上装载了 DatePicker,日期选择事件则由监听 器OnDateSetListener负责响应,在该监听器的onDateSet方法中,开发者获取用户选择 的具体日期,再做后续处理
时间对话框TimerPickerDialog
Android App开发基础
App工程目录结构
编译配置文件build.gradle
项目级别的 build.gradle 指定了当前项目的总体编译规则
模块级别的 build.gradle 对应于具体模块,每个模块都有自己的 build.gradle,它指定 了当前模块的详细编译规则
运行配置文件AndroidManifest.xml
每个应用的根目录中都必须包含一个 AndroidManifest.xml,并且文件名必须一模一样。 这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面
界面设计与代码逻辑
在 layout 目录下创建 XML 文件
创建与 XML 文件对应的 Java 代码
在 AndroidManifest.xml 中注册页面配置
简单控件
文本显示
设置文本的内容
在XML文件中通过属性 android:text设置文本
在java代码中调用文本视图对象的setText方法设置文本
引用字符串资源
在XML文件中引用(@string/***)
在java代码中引用(R.string.***)
设置文本大小
在java代码中调用setTextSize方法
在XML文件中通过属性android:textSize制定文本大小,此时需要指定字号单位
单位
px:它是手机屏幕的最小显示单位,与设备的显示屏有关
dp:它是与设备无关的显示单位,只与屏幕的尺寸有关
sp:专门用来设置字体大小,在系统设置中可以调整字体大小
设置文本的颜色
在java代码中调用setTextColor方法即可设置文本颜色,具体色值可从Color类取
在XML文件中则通过属性android:textColor指定文本颜色
使用色值定义文字颜色
色值有八位十六进制数与六位十六进制数
在java代码中设置色值需要添加前缀0x表示十六进制数,引用颜色资源(R.color.***)
在XML文件中设置色值需要添加"#"前缀,引用颜色资源(@color/***)
试图基础
设置视图的宽高
视图宽度通过属性android:layout_width表达,视图高度通过属性android:layout_heig ht表达
宽高取值
match_parent:表示与上级视图保持一致
wrap_content:表示与内容自适应
以dp为单位的具体尺寸
在代码中设置视图宽高
首先确保XML中的宽高属性值为wrap_content,
调用控件对象的getLayoutParams方法,获取该控件的布局参数
布局参数的width属性表示宽度,height属性表示高度,修改这两个属性值
调用控件对象的setLayoutParams方法,填入修改后的布局参数使之生效
设置视图的间距
采用layout_margin属性
它指定了当前视图与周围平级视图之间的距离。包括layout_margin、 layout_marginLeft、layout_marginTop、layout_marginRight、layout_marginBottom
采用padding属性
它指定了当前视图与内部下级视图之间的距离。包括padding、paddingLef t、paddingTop、paddingRight、paddingBottom
设置视图的对齐方式
采用layout_gravity属性,它指定了当前视图相对于上级视图的对齐方式。
采用gravity属性,它指定了下级视图相对于当前视图的对齐方式
layout_gravity与gravity的取值包括:left、top、right、bottom,还可以用竖线连接各 取值,例如“left|top”表示即靠左又靠上,也就是朝左上角对齐
常用布局
线性布局LinearLayout
orientation属性值为horizontal时,内部视图在水平方向从左往右排列
orientation属性值为vertical时,内部视图在垂直方向从上往下排列。
线性布局的权重
指的是线性布局的下级视图各自拥有多大比例的宽高
权重属性名叫layout_weight,但该属性不在LinearLayout节点设置,而在线性布局的直 接下级视图设置,表示该下级视图占据的宽高比例
layout_width填0dp时,layout_weight表示水平方向的宽度比例;layout_height填0dp时,layout_weight表示垂直方向的高度比例
相对布局RelativeLayout
相对布局的下级视图位置由其他视图决定
与该视图自身平级的视图
该视图的上级视图(也就是它归属的RelativeLayout)
如果不设定下级视图的参照物,那么下级视图默认显示在RelativeLayout内部的左上角
网格布局GridLayout
网格布局支持多行多列的表格排列
网格布局默认从左往右、从上到下排列
columnCount属性,它指定了网格的列数,即每行能放多少个视图
rowCount属性,它指定了网格的行数,即每列能放多少个视图
滚动视图ScrollView
ScrollView
它是垂直方向的滚动视图;垂直方向滚动时,layout_width属性值设置为match_p arent,layout_height属性值设置为wrap_content
HorizontalScrollView
它是水平方向的滚动视图;水平方向滚动时,layout_width属性值设置 为wrap_content,layout_height属性值设置为match_parent
按钮触控
按钮控件Button
按钮控件Button由TextView派生而来,它们之间的区别有
Button拥有默认的按钮背景,而TextView默认无背景
Button的内部文本默认居中对齐,而TextView的内部文本默认靠左对齐
Button会默认将英文字母转为大写,而TextView保持原始的英文大小写
Button新增属性
textAllCaps属性,它指定了是否将英文字母转为大写,为true是表示自动转为大写,为false表 示不做大写转换
onClick属性,它用来接管用户的点击动作,指定了点击按钮时要触发哪个方法
点击事件和长按事件
监听器,意思是专门监听控件的动作行为。只有控件发生了指定的动作,监听器才会触发 开关去执行对应的代码逻辑
点击监听器,通过setOnClickListener方法设置。按钮被按住少于500毫秒时,会触发点击事件
长按监听器,通过setOnLongClickListener方法设置。按钮被按住超过500毫秒时,会触发长按 事件
禁用与恢复按钮
是否允许点击由enabled属性控制,属性值为true时表示允许点击,为false时表示不允许点击
图像显示
图像视图ImageView
在XML文件中,通过属性android:src设置图片资源,属性值格式形如“@drawable/不含扩展名 的图片名称”
在Java代码中,调用setImageResource方法设置图片资源,方法参数格式形如“R.drawable.不 含扩展名的图片名称”
ImageView本身默认图片居中显示,若要改变图片的显示方式,可通过scaleType属性设定
图像按钮ImageButton
ImageButton是显示图片的图像按钮,但它继承自ImageView,而非继承Button
ImageButton和Button的区别
Button既可显示文本也可显示图片,ImageButton只能显示图片不能显示文本
ImageButton上的图像可按比例缩放,而Button通过背景设置的图像会拉伸变形
Button只能靠背景显示一张图片,而ImageButton可分别在前景和背景显示图片,从而实现两 张图片叠加的效果
ImageButton与ImageView的区别
ImageButton有默认的按钮背景,ImageView默认无背景
ImageButton默认的缩放类型为center,而ImageView默认的缩放类型为fitCenter
同时展示文本与图像
利用LinearLayout对ImageView和TextView组合布局
通过按钮控件Button的drawable***属性设置文本周围的图标
drawableTop:指定文字上方的图片
drawableBottom:指定文字下方的图片
drawableLeft:指定文字左边的图片
drawableRight:指定文字右边的图片
drawablePadding:指定图片与文字的间距
活动Activity
启停活动页面
Activity的启动和结束
从当前页面跳到新页面
startActivity(new Intent(源页面.this, 目标页面.class));
从当前页面回到上一个页面,相当于关闭当前页面
finish(); // 结束当前的活动页面
Activity的生命周期
onCreate:创建活动。把页面布局加载进内存,进入了初始状态
onStart:开始活动。把活动页面显示在屏幕上,进入了就绪状态
onResume:恢复活动。活动页面进入活跃状态,能够与用户正常交互,例如允许响应用户的点击 动作、允许用户输入文字等等
onPause:暂停活动。页面进入暂停状态,无法与用户正常交互
onStop:停止活动。页面将不在屏幕上显示
onDestroy:销毁活动。回收活动占用的系统资源,把页面从内存中清除
onRestart:重启活动。重新加载内存中的页面数据
onNewIntent:重用已有的活动实例
Activity的启动模式
在配置文件中指定启动模式
standard:标准模式,无论何时启动哪个活动,都是重新创建该页面的实例 并放入栈顶。如果不指定launchMode属性,则默认为标准模式
singleTop:启动新活动时,判断如果栈顶正好就是该活动的实例,则重用该 实例;否则创建新的实例并放入栈顶,也就是按照standard模式 处理
singleTask:启动新活动时,判断如果栈中存在该活动的实例,则重用该实例, 并清除位于该实例上面的所有实例;否则按照standard模式处理
singleInstance:启动新活动时,将该活动的实例放入一个新栈中,原栈的实例列 表保持不变
在代码里面设置启动标志
Intent.FLAG_ACTIVITY_NEW_TASK:开辟一个新的任务栈
Intent.FLAG_ACTIVITY_SINGLE_TOP:当栈顶为待跳转的活动实例之时,则重用栈顶的实例
Intent.FLAG_ACTIVITY_CLEAR_TOP:当栈中存在待跳转的活动实例时,则重新创建一个新实例, 并清除原实例上方的所有实例
Intent.FLAG_ACTIVITY_NO_HISTORY:栈中不保存新启动的活动实例
Intent.FLAG_ACTIVITY_CLEAR_TASK:跳转到新页面时,栈中的原有实例都被清空
在活动之间传递消息
显式Intent和隐式Intent
Intent是各个组件之间信息沟通的桥梁,它用于Android各组件之间的通信
标明本次通信请求从哪里来、到哪里去、要怎么走
发起方携带本次通信需要的数据内容,接收方从收到的意图中解析数据
发起方若想判断接收方的处理结果,意图就要负责让接收方传回应答的数据内容
Intent的组成部分
Component:组件,它指定意图的来源与目标
Action:动作,它指定意图的动作行为
Data:即Uri,它指定动作要操纵的数据路径
Category:类别,它指定意图的操作类别
Type:数据类型,它指定消息的数据类型
Extras:扩展信息,它指定装载的包裹信息
Extras:标志位,它指定活动的启动标志
向下一个Activity发送数据
Intent使用Bundle对象存放待传递的数据信息
在代码中发送消息包裹,调用意图对象的putExtras方法,即可存入消息包裹
在代码中接收消息包裹,调用意图对象的getExtras方法,即可取出消息包裹
向上一个Activity返回数据
上一个页面打包好请求数据,调用startActivityForResult方法执行跳转动作
下一个页面接收并解析请求数据,进行相应处理
下一个页面在返回上一个页面时,打包应答数据并调用setResult方法返回数据包裹
上一个页面重写方法onActivityResult,解析获得下一个页面的返回数据
为活动补充附加信息
利用资源文件配置字符串
res\values\strings.xml 可用来配置字符串形式的参数
在活动页面的Java代码中,调用getString方法即可根据“R.string.参数名称”获得指定 参数的字符串值
利用元数据传递配置信息
元数据是一种描述其他数据的数据,它相当于描述固定活动的参数信息
在activity节点内部添加meta-data标签,通过属性name指定元数据的名称,通过属性v alue指定元数据的值
给应用页面注册快捷方式
在res/values/strings.xml添加各个菜单项名称的字符串配置
创建res/xml/shortcuts.xml,在该文件中填入各组菜单项的快捷方式定义(每个菜单 对应哪个活动页面)
给activity节点注册元数据的快捷菜单配置
自由主题
收藏
0 条评论
下一页