Kotlin学习
此文是在阅读《Kotlin进阶实战》中所写的一些笔记记录,其中一些内容之前学习过故会引出连接。 函数与类 函数 基本格式就是: 123fun <函数名>(): <返回值> { ...} 这些基本的与Java差不多的就不再赘述了。 返回Unit的函数 在Kotlin中,没有void,函数总会返回一个值,如果该函数不返回任何类型的对象,那么就会返回Unit类型。 123fun printHello(): Unit { println("Hello World")} 其中Unit可以省略: 123fun printHello() { println("Hello World")} 返回Nothing的函数 与Unit相比,Nothing的区别是在Nothing后面执行的代码,均不能执行。 12345678910fun doForever(): Nothing { while(true) { ...
简易的多模块教程
...
Mysql学习
MySQL启动和连接 启动: 1net start mysql80 关闭: 1net stop mysql80 启动和关闭需在管理员模式下运行 MySQL客户端连接: 1nysql -u root -p 然后输入密码即可 数据模型 关系型数据库(RDBMS): 概念:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护 使用$\texttt{SQL}$语言操作,标准统一,使用方便 MySQL数据库 数据模型 客户端 -> DBMS(数据库管理系统) -> 数据库(可以有多个) -> 表(一个数据库可以有多张表) SQL SQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 SQL语句可以使用空格/缩进来增强语句的可读性。 MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 注释: 单行注释: --注释内容 或 # 注释内容(MySQL特有) 多行注释: /* 注释内容 */ SQL分类 DDL 全称Data Definition...
Material之Android下拉刷新
安卓中的Material自带的下拉刷新控件,能实现下拉刷新的效果。 导入依赖: 1234dependencies { ... implementation "androidx.swiperefreshlayout:swiperefreshlayout:$swiperefreshlayout_version"} 引入布局: 1234567891011121314151617181920212223242526<androidx.swiperefreshlayout.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipeRefresh"> <ScrollView ...
Android进阶技巧
全局获取context 我们在许多地方都需要使用到context,但当程序复杂起来,脱离了activity时,我们通常需要关注是否要将context在函数中传递,那么如何才能简化这个步骤,使得在任何地方都能获取context呢? Android提供了一个application类,当应用程序启动时,会对这个类进行初始化,我们可以对这个类进行自定义,用来管理全局context。 新建一个MyApplication: 1234567891011class MyApplication : Application() { companion object { lateinit var context : Context } override fun onCreate() { super.onCreate() context = applicationContext ...
TaskListDemo的升级----使用事件分发添加侧滑显示删除按钮
前言 之前写过一篇关于RecyclerView的进阶使用来搭建一个简易的ToDoList列表(link),里面是通过侧滑滑倒底直接删除,但这样显然不够美观,也容易导致误触。我们可以像QQ那样实现一个侧滑到一定程度显示一个按钮,我们点击按钮进行删除,比如: 那这个又应该如何实现呢? 实现 我们可以设置一个LinearLayout布局,让text占满屏幕,让按钮隐藏在屏幕外,然后通过整个布局的onTouchEvent()方法,来改变位置 12345678910111213141516171819202122232425parentLayout.setOnTouchListener { v, event -> when(event.action) { MotionEvent.ACTION_DOWN -> { initialX = event.x.toInt() } MotionEvent.ACTION_MOVE -> { ...
RecyclerView的进阶用法------完成一个简易的任务列表
简介 最近稍微学了一些RecyclerView的进阶使用,就做了一个简单的ToDoList来进行应用。 github地址https://github.com/generalio/AndroidStudy/tree/main/TaskListDemo 简要功能介绍 动态添加任务 为每个任务添加任意的子任务 任务的展开与收起 侧滑删除任务(删除一级任务时子任务会跟着删除) 长按拖拽(只有任务被收起时的一级任务能被拖拽) 长按拖拽任务能改变级数 侧滑到一定位置显示删除按钮 实现 activity_main.xml里面导入布局: 123456789101112131415161718192021222324252627282930313233<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
RxJava学习笔记(一)
RxJava RxJava 入门 RxJava 入门理念 Rx 是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便地处理异步数据流。RxJava 充分体现了函数响应式编程思维,解决了传统异步代码过于繁琐的痛点,采用函数式方式使得代码更好维护以及编写。 函数式编程的概念和特性 概念: 为了解决烦琐复杂的并发编程以及分布式处理、多线程等常见问题。 函数式编程往往由于其数据不可变,因此没有并发编程中的问题,相比于并发编程,更安全。可以将解决多种业务逻辑单独抽离成对一个函数的求解运算,在其求解过程中,常常可运用于单一原则或多次复用某一函数,同时避免了状态以及变量的概念,,思维更接近数学运算。 特性: 响应式编程的概念和特性 概念: 响应式编程是一种面向数据流及其变化传播的编程方式,意味着静态以及动态的数据流可以很直观地被表达展示,其计算模型会以一种变化的值通过数据流的方式进行传播。 特性: RxJava 基础知识 Rx 模型特性: 创建 Observer(观察者),代表着不同的线程中执行异步处理事件业务逻辑回调通知观察者,观察者在未执行的时候永远待命。 使用...
使轮播图能跟着文章列表上滑而上滑
在写寒假考核时,主界面是由一个viewpager2的轮播图和RecyclerView的文章列表,但这样有个问题,当我们向上滑动列表时,轮播图并不会跟着滑动,这样非常影响视觉体验,之前的效果参考WanAndroid的README的主页界面展示,那么我们应该如何解决这个问题呢?就是将轮播图也添加进RecyclerView里面。效果如下: 实现 先新建一个banner.xml布局,用于展示我们的轮播图: 1234567891011121314151617181920212223242526272829303132333435363738<?xml version="1.0" encoding="utf-8"?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" ...
Kotlin进阶学习
函数参数默认值 123fun printParams(num: Int, str: String = "hello") { println("num is $num , str is $str")} 我们为第二个参数设定了一个默认值,这样即使我们不传第二个参数,也会有默认值。但如果我们设定的默认值在前面,仍不传的话就会报错。比如: 123fun printParams(str: String = "hello", num: Int) { println("num is $num , str is $str")} 但是Kotlin支持键值对的形式传参,就很好的避免了上述问题: 1printParams(num = 100) 扩展函数 语法结构 123fun ClassName.methodName(paran1: Int, param2: Int): Int { return...