1.Activity的七个生命周期方法
周期
描述
onCreate
初始化setContentLayout()方法(屏幕绘制)
onStart
此时activity进入了onStart()方法,当前activity是用户可见状态,但是还不能交互,再此课做一些动画的初始化操作
onResume
onStart()后activity进入onResume方法,当前activity状态属于运行状态,(Running),此时的activity可见可交互
onPause
在系统进行另一个activity是调用,他必须迅速的执行所需的操作,该方法执行后,下一个Activity才能开始执行,该方法执行后应该执行onStop()方法
onStop
当Activity对与用户不在可见的时候调用,可能是被另一个Activity覆盖,或者退回到桌面,在onStop方法下系统内存紧张时,有可能会被系统回收
onDestory
当Activity结束或者被系统销毁Activity实例的时候,会被调动该方法
onDestory
在Activity被停止后再次启动的时候调用,比如从 ...
引言正确将文件资源放置在res文件下,可以减少不必要的麻烦,使用其中的软编码的格式,可以极大的降低由于硬编码导致的维护的不便。
1. String直接在string.xml文件中定义好其中的变量就可以直接使用。
2. StringArray有时候,我们需要传入一个数组时候,使用硬编码的格式的话,必然会导致需要更新时带来的代码重构问题,同样的,我们也可以在string.xml中定义好数组的定义,例如:
123456789<string-array name="myStrArray"> <item>"恭喜发财"</item> <item>"牛气冲天"</item> <item>"心想事成"</item> <item>"万事如意"</item> <item>"开心一整年"</i ...
1.字符修改上的区别
①当我们需要对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
②和 String 类不同的是,StringBuffer 和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象,可以减少对内存的使用。
③StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
④由于 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类,由于 StringBuffer 操作字符串的方法加了 synchronized 关键字进行了同步,主要是考虑到多线程环境下的安全问题,所以如果在非多线程环境下,执行效率就会比较低,因为加了没必要的锁。
2.相同点2.1 初始容量初始容量都是16和扩容机制都是”旧容量*2+2”
2.2 底层原理都是用char[ ...
1. 目标实现多个Activity集成应用,包含简单的页面转跳、参数传递、返回值传递,掌握Activity的创建、注册、启动、和相关回调方法的重写,Intent的实例化,参数设置和参数传递,Activity中参数回传的机制。
2. 要点实现2.1 创建主要页面通过对页面进行拆分,我们可以将页面分成线性布局,这样可以用极大的避免元件之间出现位置错误:
可以将其拆分为一个垂直布局和两个水平布局,就和html中的div盒子一样,将元件摆放在其中,其中对于线性布局,我们使用:
123<LinearLayout>//内部组件编写在这里</LinearLayout>
将这个组件可以看作一个div盒子,对其设置相应的宽高,和布局方向:
12345678//宽度撑满父部容器android:layout_width="match_parent" //高度跟随子容器需要的高度变化android:layout_height="wrap_content"//设置布局为垂直布局android:orientation="vertic ...
1. 软件下载软件免费,在官网下载最新版本即可,不给链接了,不过审:
2. 创建应用单击创建新项目,选择空的视图活动,这里会生成layout文件实时展示页面信息。
选择next进入下一步:
3. 项目结构左侧为项目资源区:
在布局描述文件中编写页面的主要布局代码,例如:
123456789101112131415161718192021222324<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android ...
后端学习
未读1. 函数1.1 创建函数Kotlin函数使用fun关键字声明:
123fun 函数名称([函数参数...]): 返回值类型 { //函数体}
例如,我们创造一个空类型的返回函数,在java中我们通常使用void函数,在kotlin中我们使用Unit类型:
1234567891011//这个函数用于打印一段文本fun hello(): Unit { //本质上应该是返回Unit类型,这个类型表示空,类似于Java中的void,默认情况下可以省略 println("Hellow,kotlin")}//这里同如果是Unit不需要参数返回类型则可以不写,如下// fun hello(){// println("Hellow,kotlin")// }fun main(){ hello()}
当我们需要一个传入参数的函数的时候,例如:
123456fun main(){ say("你好")//调用say函数&# ...
后端学习
未读1. 序言1.1 开发环境配置要开发Kotlin程序,我们首先需要安装Java环境,我们一般使用Kotlin都是在JVM平台上进行开发(Kotlin同样可以开发系统原生程序、JavaScript程序、安卓程序、iOS程序等)因为Java支持跨平台,能在编译后再任意平台上运行,因此,我们将JVM环境中学习Kotlin程序的开发,接下来我们要安装两个环境:
Java 17 环境
Kotlin 1.9.0 环境
1.2 程序代码基本结构示例代码:
123fun main() { println("Hello World!")}
运行结果:
注意事项:其中严格区分大小写,一行代码结束不需要添加分号结尾,除非需要在一行中添加多行代码。
1.3 程序注释编写同java一样,单行使用 // ,多行使用 /* */。
2. 变量与基本类型2.1 变量的声明与使用要声明一个变量,我们需要使用以下格式:
1var [变量名称] : [数据类型]
标识符可以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。
变量不能重 ...
1. 复刻流程嘉立创打板 => 购买元件 => 打印3D外壳 => 到货焊接 => 程序烧录 => 上电测试 => 组装
2. 打板进入嘉立创开源广场搜 “天气时钟” ,找到图中的项目
也可以找到这个大佬的主页,他其中的这个时钟经过三个版本的迭代,上图为最终版本。
这里以最初的V1版本举例,其中三个三个版本的固件是同一个,只有板子的排列有所不同,都是一样的操作方式,进入V1版本的页面往下寻找板子资源图,在编辑器打开。
选择输出板子pcb文件后可以快速到下单页面
下面如果是免费的打样券都选择不需要即可。接下来下单等待即可,一般提交后厂家接单后开始生产需要2天完工,不同板子的颜色不同时间也不同,快递时效2天左右,大概下单5天左右就能拿到。
3. 原件购买在板子下面就是需要的原件清单,电阻电容的最小售卖单位一般为100,所有按需购买。其中划掉的可以不焊接
这里提供的BOM清单缺少0.1uF电容,以上原件在3代产品中,除了MICRO USB转接板只有在1代中使用,2、3代都直接焊 ...
1. 0.96寸OLEDOLED (Organic Light Emitting Diode) 又称有机发光二极管,性能优异的新型显示屏,具有功耗低、相应速度快宽视角、轻薄柔韧等特点,这里使用的0.96寸的OLED模块:小巧玲珑、占用接口少、简单易用,是电子设计中非常常见的显示屏模块,供电:3~5.5V,通信协议:12C/SPI,分辨率:128*64。
一共又四种类型:
2. 驱动函数
函数
作用
OLED_Init();
初始化
OLED Clear();
清屏
OLED_ShowChar(1,1,’A’);
显示一个字符
OLED_ShowString(1,3,”HelloWorld!”);
显示字符串
OLED ShowNum(2,1,12345,5);
显示十进制数字
OLED ShowSignedNum(2,7,-66,2);
显示有符号十进制数字
OLED_ShowHexNum(3,1,xAA55,4);
显示十六进制数字
OLED ShowBinNum(4,1,0xAA55,16);
显示二进制数字
3. 程序编写3.1 ...
1. 效果截图
2. algolia这里查阅主题的配置文件_config.yml得知主题中内置了对algolia的支持。
2.1 注册
前往 Algolia 官网注册一个账号,新建 应用和 index
数据中心建议选择新加坡或香港,当然根据你自己情况而定
2.2 安装插件在hexo目录的根目录下运行git,输入以下两个命令(二选一)
12npm install hexo-algolia --save npm install hexo-algoliasearch --save
也就很明显了,如果你想要全站搜索可选择前者,如果你只想搜索文章两者兼可。但前者不能将文章内容作为索引上传(其实老版本是支持的,但因为索引大小限制,在新版本取消索引了文章内容),后者目前仍可全文上传。然后就是 HEXO 配置文件中添加以下内容,下文基本以 hexo-algoliasearch 为例,因为我个人认为访客只会搜文章吧(事实上是搜索根本没人用,毕竟也根本没人访问),hexo-algolia 可查看官方文档,注意配置和命令的区别。
2.3 项目配置在hexo下的_config.yml中添加以下的 ...






