IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【学习笔记】| 移动应用开发Android (未完待更新) -> 正文阅读

[移动开发]【学习笔记】| 移动应用开发Android (未完待更新)

一、基础布局控件

1.1 布局管理器

? 约束布局(ConstraintLayout)
? 相对布局(RelativeLayout )
? 线性布局(LinearLayout )
? 表格布局(TableLayout)
? 网格布局(GridLayout)
? 层布局(FrameLayout)
? 绝对布局(AbsoluteLayout)

其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。

线性布局最常用属性
android:id
android:layout_margin(外边距)
android:layout_width
android:layout_padding (内边距)
android:layout_height
android:orientation 方向 vertical(垂直)horizontal(水平)
android:background (背景)
? android:gravity(该属性用于设置控件相对于容器的对齐方式)
? android:layout_weight=“1”(在父控件中剩下的部分我们再次分配/把剩余内容按照权重去分配)
? wrap_content:包含内容,我内容有多少宽度就有多少
? match_parent:匹配父控件,父控件有多宽 本体就有多宽

相对布局最常用属性

? android:layout_toLeftOf (在谁的左边)
? android:layout_toRightOf (在谁的右边)
? android:layout_alignBottom (跟谁底部对齐)
? android:layout_alignParentBottom (跟父控件底部对齐)
? android:layout_below (在谁的下边)

1.2 TextView

? 文字大小、

? 颜色显示不下使用…

? 文字+icon

? 中划线、下划线

? 跑马灯

1.3 Button

? 文字大小、颜色
? 自定义背景形状
? 自定义按压效果
? 点击事件

1.4 EditText

? 常用属性
? 监听事件
? 制作登录界面

1.5 单选框(RadioButton)

? 常用属性
? 自定义样式
? 监听事件

用switch开关语句让代码冗余降低

1.6 复选框(CheckBox)

? 常用属性
? 自定义样式
? 监听事件

1.7 ImageView

? Button的其他衍生控件:ToggleButton、Switch

? 常用属性

? 加载网络图片

? ImageView控件中scaleType的几个属性:

? fitXY :撑满控件,宽高比可能发生改变
? fitCenter :保持宽高比缩放,直至能够完全显示
? centerCrop :保持宽高比缩放,直至完全覆盖控件,裁剪显示

二、视图

2.1 列表视图ListView

? 常用属性.
? Adapter接口
? Demo演示

2.2 网格视图GridView

2.3 ScrollView & HorizontalScrollView

? 滚动视图:前者实现上下滚动,后者实现水平滚动

? 注意滚动视图的子布局只能有一个!!!

2.4 RecyclerView

RecyclerView能够灵活实现大数据集的展示,视图的复用管理比ListView更好,能够显示列表、网格、瀑布流等形式,且不同,ViewHolder能够实现item多元化的功能。但是使用起来会有点麻烦,并且没有类似ListView的onItemClickListener监听事件,需要开发者自己实现

该控件使用需要引入相关的库

2.5 WebView

2.5.1 加载网页

? 加载URL (网络或者本地assets文件夹下的html文件)

? 加载html代码

? Native和JavaScript相互调用

2.5.2 加载网络URL

? webview.loadUrl( "http://www.baidu.com”);

2.5.3 加载assets下的html文件

? webview.loadUrl( "file:///android_asset/test.html” );

2.5.4 加载html代码

? webview.loadData();

? webview.loadDataWithBaseURL();

2.5.5 网页的前进后退

? webview.canGoBack()

? webview.goBack()

? webview.canGoForward()

? webview.goForward()

? webview.canGoBackOrForward(int steps)

? webviev.goBackOrForward(int steps)

按下返回键,默认是退出当前Activity,如果希望是WebView内页面后退
在这里插入图片描述

三、弹出组件

3.1 Toast

? UI组件之弹出组件-Toast 弹出提示

? Toast是一个消息提示组件

? 设置显示位置

? 自定义该消息提示组件的显示内容

? 简单封装

3.2 AlertDialog (警告对话框)

? 弹出对话框

有三种样式:默认样式、单选样式、多选样式、自定义样式

3.3 ProgressBar&ProgressDialog

? 加载时候的加载进度条

3.4 PopupWindow

在界面上弹出一个选项菜单的一个功能。与Dialog不同的是,Dialog弹出的是一个透明的对话框、而PopupWindow他是没有这种透明的效果的。

四、android中的适配器

什么是适配器?

适配器就是就是把一些数据给弄得适当,适合以便于在View上显示。

? Android适配器是数据和视图之间的桥梁,以便于数据在View上显示。适配器就像显示器,把复杂的东西按人可以接受的方式来展现。我们常用的适配器一共有三个:ArrayAdapter(数组适配器),SimpleAdapter(简单适配器), BaseAdapter (自定义适配器)。

4.1 ArrayAdapter(数组适配器)

这是一种以一种类似数组的方式来存储数据,然后再传递的适配器。

用法:

  1. 建一个ListView控件,并加上id,方法与textView一样;另外再单独建一个textView单没有布局
  2. 实例化ListView得到mLextView,并监听;
  3. 获得数据源,如String[] data={“java”,“android”,“j2se”,“html”,“wphone”,“net”,“javaScript”};就是列出你想展示的东西;
  4. 实例化适配器 arrayAdapter adapter=new arrayAdapter (this,R.DANDUtxt_layout,data);
  5. 链接适配器与数据源 mLextView.setAdapter(adpter);

hello world00 test22

4.2 SimpleAdapter(简单适配器)

用法与arrayAdapter大同小异。

用法:

  1. 建一个ListView控件,并加上id,方法与textView一样;另外再单独建一个布局,内容根据实际情况来写
  2. 实例化ListView得到mLextView,并监听;
  3. 获得数据源,这里会用到HASHMap和ArrayList来存储数据;
  4. 实例化适配器 arrayAdapter adapter=new arrayAdapter (this,R.DANDUtxt_layout,data);
  5. 链接适配器与数据源 mLextView.setAdapter(adpter);

helloWorld01 活动页间信息的传递

4.3 BaseAdapter (自定义适配器)

用法:建一个类继承自baseAdapter;里面要实现4种方法;
img

这里有例题还没有搞懂!!! helloworld00 Test13里的ListView、GridView

五、不可不会的Activity和Fragment

5.1.1 Activity的创建三部曲

  • 新建类继承Activity或其子类
  • 在AndroidManifest中声明
  • 创建layout并在Activity的onCreate中设置

注意:

  1. 如果想修改工程中其中一个Activity的导航栏标签这时候只需进入AndroidManifest.xml文件中 在对应的activity中添加label属性即可

  2. 如果想去掉某一个Activity的导航栏 这个时候在activity中添加theme属性,并将该属性设置为

    style/Theme. AppCompat.Light.NoActionBar然后再次运行就会发现导航栏被去掉了

  3. 如果想把工程中所有的Activity导航栏去掉这个时候只需要把application中的theme属性设置为

    style/Theme. AppCompat.Light.NoActionBar

  4. 屏幕的方向切换设置 在activity中添加这个android:screenOrientation="portrait"

    • portrait 竖屏显示
    • landscape 横屏显示
    • 如果不添加screenOrientation这个属性 默认情况下 手机竖屏他就竖屏显示,手机横屏他就横屏显示
  5. 还有一个android:1aunchMode=启动属性,后面会详细讲解

  6. activity中的是把这个activity设置为默认启动的activity。

5.1.2 Activity的生命周期

1、activity生命周期图
在这里插入图片描述
2、activity三种状态

(1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个时刻只会有一个Activity处于活动(Active)。

(2)paused:当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉。

(3)stoped:完全被另一个Activity遮挡时处于停止状态,它仍然在内存中保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。

3、activity七个方法

(1)onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。通常用于初始化设置,为Activity设置所要使用的布局文件,为按钮绑定监听器等静态的设置操作。

(2)onStart():当Activity可见未获得用户焦点不能交互时系统会调用。

(3)onRestart():当Activity已经停止然后重新被启动时系统会调用。

(4)onResume():当Activity可见且获得用户焦点能交互时系统会调用。

(5)onPause():用来存储持久数据。到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。

(6)onStop():当Activity被新的Activity完全覆盖不可见时被系统调用。

(7)onDestroy():当Activity(用户调用fimish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。

4、android三个嵌套循环

(1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。

(2)Activity的可视生命周期:从调用onStart()到相应的调用onStop()。在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。

(3)Activity的前台生命周期:从调用onResume()到相应的调用onPause()。

5、BroadcastReceiver广播接收器生命周期

生命周期只有十秒左右,如果在onReceive()内做超过十秒内的事情,就会报ANR(Application No Response)程序无响应的错误信息。它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。

6、Service服务生命周期

Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。

Service有两种使用方法:

(1)以调用Context.startService()启动,而以调用Context.stopService()结束。

(2)以调用Context.bindService()方法建立,以调用Context.unbindService()关闭。

7、一个activity的启动过程

(1)第一个Activity的启动顺序:onCreate()——>onStart()——>onResume()

(2)当另一个Activity启动时:第一个Activity onPause()——>第二个Activity onCreate()——>onStart()——>onResume()——>第一个Activity onStop()

(3)当返回到第一个Activity时:第二个Activity onPause()——> 第一个Activity onRestart()——>onStart()——>onResume()——>第二个Activity onStop()——>onDestroy()

每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。

5.1.3 Activity的跳转和数据传递

  • 显示跳转和隐式跳转
  • Activity之间的数据传递
  • startActivityForResult :启动Activity,结束后返回结果

5.1.4 Activity的四种启动模式

  • standard:标准模式,默认
  • singleTop : Task栈顶复用模式
  • singleTask : Task栈内复用模式
  • singleInstance :全局单例模式

standard

Activity是由任务栈管理的,每启动一个Activity ,就会被放入栈中,按返回键,就会从栈顶移除一 个Activity。

standard是默认的启动模式,即标准模式。每启动一个Activity,都会创建一个新的实例。

singleTop

当要启动的目标Activity已经位于栈顶时,不会创建新的实例,会复用栈顶的Activity ,并且其onNewIntent()方法会被调用;如果目标Activity
不在栈顶,则跟standard- -样创建新的实例。

singleTask

在同一个任务栈中,如果要启动的目标Activity已经在栈中,则会复用该Activity ,并调用其onNewIntent(方法,并且该Activity.上面的Activit
y会被清除;如果栈中没有,则创建新的实例。

singleInstance

全局复用,不管哪个Task栈,只要存在目标Activity ,就复用。每个Activity占有一个新的Task栈。

5.2.1 Fragment(一)

什么是Fragment?

? 当我们画一个界面的时候,通常用一个Activity。但是还可以用一个Activity加几个Fragment的形式,也可以认为Fragment是用来模块界面的。

  • Fragment有自己的生命周期

  • Fragment依赖于Activity

  • Fragment通过getActivity()可以获取所在的Activity ;

    Activity通过FragmentManager的findFragmentById()或findFragmentByTag()获取Fragment

  • Fragment和Activity是多对多的关系

5.2.2 Fragment (二)

  • Fragment中getActivity()为null的问题
  • 向Fragment传递参数

5.2.3 Fragment (三)

  • Fragment回退栈

5.2.4 Fragment (四)

六、必须深刻理解的Android事件处理

当用户在应用界面上执行各种操作时,应用程序需要为用户的动作提供响应,这种响应的过程就是事件处理。

6.1 基于监听的事件处理机制

监听三要素

? Event Source(事件源)

? Event(事件)

? Event Listener(事件监听器)
在这里插入图片描述

事件源—btnTestEvent、事件监听器----new view.OnClickListener()…、事件—点击事件
在这里插入图片描述
事件源—btnTestEvent、事件监听器—new View.OmToouchListener()…、事件—触摸事件,在重写方法里的event对象就是具体的事件

实现监听事件的方法:

  • 通过内部类实现
  • 通过匿名内部类实现
  • 通过事件源所在类实现
  • 通过外部类实现
  • 布局文件中onClick属性(针对点击事件)

给同一个事件源添加多个同种类型监听器会怎样?

这个时候事件源会响应设置的最后的那个监听器。

6.2 基于回调的事件处理机制

  • 基于回调的事件传播

回调机制与监听机制的区别?

6.3 源码剖析,了解View的事件分发

6.4 Handler消息处理

七、SQLite (关系型数据库)

SQLite的特点:

? 嵌入式的数据库,体积小功能强大
? 几十kb. 嵌入式设备,上:计算器手表
? ISO: Sqlite数据库

在Android平台上,集成了一个嵌入式关系型数据库- SQLite, SQLite3支持 NULL、INTEGER、REAL (浮点数字)、TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)、char(n)、 decimal(p,s)等数据类型,只不过在运算或保存时会转成对应的五种数据类型。SQLite最大的特点是你可以把各种类型的数据保存到任何字段中,但是主键只能是Integer类型的。
Sqlite数据库一般要求主键是**_ id**, 当然也可以是id。

原来:数据库
安装一个数据库的软件。
android里面的数据库是由底层的sqilte.c的代码来动态生成的

7.1 SharedPreferences轻量数据存储

7.2SQLite增删改查

Android系统封装了一个类SQLiteOpenHelper (工具类)该工具类是抽象类public abstract class,所以我们要想使用数据库,就必须自己定义一个类继承这个类然后实现里面的抽象方法。

HelloWorld00 Test25 学生成绩的插入与查询

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:55:55  更:2021-08-02 10:57:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 2:53:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码