
Kotlin
文章平均质量分 57
独上西楼-
纸上得来终觉浅,绝知此事要躬行
展开
-
Koin 注入框架 - Android 使用方法 及 问题记录
Koin原创 2022-08-30 16:04:25 · 2613 阅读 · 2 评论 -
Kotlin 自定义函数
Kotlin 可以为现有类添加一个自定义函数,而不必修改原来类的代码, 也可以理解为拓展函数。1. 下面的例子为 List<String> 类添加一个转化函数,使得转化成 List<Result> 对象 (Result 为自定义的类)class ListFunctionTest { companion object { @JvmStatic fun main(args: Array<String>) { .原创 2021-01-12 14:50:13 · 559 阅读 · 0 评论 -
Kotlin VS Java笔记
记录Kotlin 遇到的与Java 不一样的地方1. Kotlin 所有类和方法默认都是 "final"的, 但是Kotlin 是没有final 关键字的,对应是Java 中的"final" 关键字常量使用 const val 修饰原创 2020-09-23 09:56:02 · 134 阅读 · 0 评论 -
模板模式学习笔记
以豆浆为例子, 制作黑豆豆浆/花生豆浆/纯豆浆。制作的过程或者说流程都固定在一个方法里。 子类只需要重写必要的方法(这里是添加调料)即可。1. 豆浆基类import android.util.Logabstract class SoyMilk { abstract var tag : String fun make() { select() if (needAddIngredient()) { add()原创 2020-09-22 17:35:06 · 126 阅读 · 0 评论 -
组合模式学习笔记
学校包含若干个学院, 学院又包含若干个专业, 其中就是组合关系(树形结构)。直接上代码1. 抽象基类import java.lang.UnsupportedOperationExceptionabstract class AbstractOrganizationComponent { protected var name: String protected var description: String constructor(name: String, descr.原创 2020-09-16 17:04:58 · 159 阅读 · 0 评论 -
装饰者模式学习笔记1_咖啡
1.原理动态的将新功鲜附加到对象上,在对象功能扩展方面,它比继承更有弹性,符合开闭原则2. 需求例子星巴克咖啡订单需求:单品咖啡: 意大利咖啡(Espresso ) ShortBlack美式咖啡(LongBlack) 无糖咖啡(Decaf)调料:豆浆(Soy) 牛奶(Milk)点单可以是单品+调料组合,最后算价格扩展性好,方便维护3. 普通实现单品咖啡 + 调料 组合缺点:类可能是全排列的数量,出现类爆炸4. 改进实现在单品咖啡中包含各种调料的判断,在计算价格的时候,根据是原创 2020-07-26 15:34:44 · 269 阅读 · 0 评论 -
RxJava笔记_2_转换
创建:https://blog.youkuaiyun.com/whjk20/article/details/1074686121. map //将被观察者发送的数据类型转变成其他的类型 private fun testMap(){ Log.d(TAG, "testMap - start") // map 里实现Function < Int, String >接口, 覆写了 fun apply(Integer integer) : String原创 2020-07-23 20:51:33 · 128 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用_3_添加自动重复播放
基于上篇(添加了页面指示器):https://blog.youkuaiyun.com/whjk20/article/details/107409638添加自动重复播放, 重复部分不再写 // 自动重复播放 private fun startAutoRepeatPlay() { // 忽略检查 @SuppressLint("HandlerLeak") // 匿名内部类 val handler = object: Handler...原创 2020-07-21 11:09:00 · 215 阅读 · 0 评论 -
RxJava笔记_1_创建2
创建1参考:https://blog.youkuaiyun.com/whjk20/article/details/107468612链式调用创建 private fun testCreateChain() { Observable.create(object : ObservableOnSubscribe<Int> { override fun subscribe(emitter: ObservableEmitter<Int>) { .原创 2020-07-21 09:58:31 · 132 阅读 · 0 评论 -
RxJava笔记_1_创建1
RxJava 三要素:1.Observer: 观察者2.Observable: 被观察者3.subscribe: 订阅目录1. 需要在build.gradle 添加reactivex的依赖:2. 创建被观察者3.创建观察者4.订阅5.输出:1. 需要在build.gradle 添加reactivex的依赖:implementation 'io.reactivex.rxjava2:rxjava:2.1.4'implementation 'io.reactivex原创 2020-07-20 17:46:34 · 228 阅读 · 0 评论 -
Kotlin_String/ Array笔记
Kotlin String 可以使用正则表达式过滤内容(split), 并且转成Array (toTypedArray), 如下:val arrays = stringList.split(";".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()由Array 可以完成查找功能(Arrays.stream(XX).anyMatch),val found = Arrays.stream(arrays).anyMatch { t -.原创 2020-07-20 13:23:32 · 3465 阅读 · 0 评论 -
观察者模式笔记
观察者模式学习笔记,模拟微信公众号推送消息观察者:用户被观察者:微信公众号推送消息的内容可以是第三方服务商提供的类图如下,实现待续原创 2020-07-18 22:23:08 · 229 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用_2_2
基于上篇(添加了页面指示器):https://blog.youkuaiyun.com/whjk20/article/details/107338023指示器的代码抽离出来,通过自定义VIEW实现, 重复部分不再写1. 继承ConstraintLayout, 自定义指示器VIEWclass ViewPagerIndicator @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyle...原创 2020-07-17 15:35:53 · 1146 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用_2
基于上篇的基本使用:https://blog.youkuaiyun.com/whjk20/article/details/107338023添加了页面指示器 (小圆点), 重复部分不再写目录1. ViewPager 布局下方添加小圆点作为指示器2. 创建指示器(小圆点),区分当前页和非当前页面(1)drawable.indicator_dot_on(2)drawable.indicator_dot_off3. 根据页面数量,创建指示器资源 (使用ImageView)4. 添加...原创 2020-07-17 14:15:45 · 1092 阅读 · 0 评论 -
Kotlin_ViewPager的简单使用
ViewPager的使用方法和RecyclerView (ListView) 的类似,对应PageAdapterRecyclerView 参考:https://blog.youkuaiyun.com/whjk20/article/details/106950422目录1. 布局文件使用ViewPager2. 创建ViewPager的条目(view_pager_item.xml)3. 定义条目的使用的数据:4. 创建适配器Adapter4.1 构造函数传递数据4.2isViewFrom..原创 2020-07-14 14:56:09 · 2562 阅读 · 0 评论 -
MVC /MVP /MVVM 架构学习_类图(井子游戏和登录界面))
关于井字游戏很简单,相当于五子棋的缩小版(三子棋), 只要横、竖、对角线上三个标志一致,则获胜。使用 MVC /MVP /MVVM不同方式的实现,其实现已经在前几天篇写了,这里只是做总结。1. 总的类图:左边部分为MVC, 右边部分为MVP, 下面为MVVM其中Model 部分(Board) 是不变的,负责数据的处理2. MVCV: XML 布局文件充当VIEW 角色 (UI)C: Activity 充当Controller角色,负责初始化View,也负责View 和Model 之间原创 2020-07-09 13:08:24 · 2421 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_3_MVVM实现
MVP 的实现参考前一篇:https://blog.youkuaiyun.com/whjk20/article/details/107213294MVVM 的实现中, Model 部分仍然不变, 使用ViewModel 代替了Presenter, 并且修改了布局文件1. ViewModelpackage com.example.tictactoe.mvvm.viewmodelimport androidx.databinding.BaseObservableimport androidx.da..原创 2020-07-08 19:35:12 · 152 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_2_MVP实现
MVC 实现参考前一篇:https://blog.youkuaiyun.com/whjk20/article/details/107213015其中,布局文件和 Model 的实现不变, 使用Presenter 代替 Controller,把Activity 抽离出来成为View, 因此仅写变化的部分目录1. Presenter (与Model 和 View 交互)2. View (对View的操作抽象为借口 TicTacToeView, 供Presenter 调用 )1. Presenter (.原创 2020-07-08 19:30:35 · 211 阅读 · 0 评论 -
MVC/ MVP / MVVM 架构学习之井字游戏_1_MVC实现
最近发现在有很好的例子,可以精简地介绍MVC/ MVP / MVVM 架构的区别和关系。所以也做记录一下,以便后续的学习。MVC 的实现,其中Model 是游戏的关键实现,在这里可以忽略,侧重MVC 之间的交互1. Model (Player - Cell - Board)enum class Player { X, O}class Cell { var value: Player ?= null}class Board { //...原创 2020-07-08 19:21:25 · 305 阅读 · 0 评论 -
Kotlin_读写文件
读写文件操作记录 private fun createNewFile(): File { var file = File("output.txt") if (file.exists()) { file.delete() } file.createNewFile() return file } priva原创 2020-07-03 17:45:19 · 2675 阅读 · 0 评论 -
Kotlin_实现每天仅弹框提醒一次
有时应用的弹框提醒,仅需每天第一次运行的时候提示用户。可以通过本地存储一个日期值, 和系统的日期值做比较,不相等则弹框。其中:1. 本地存储日期值通过 SharePreference 实现存储和读取。2. 系统日期值 通过Calendar 获取, 这里仅是判断Day(也可以通过SimpleDateFormate获取完整的年月日,甚至时分秒, 例如每隔几个小时弹框)class MainActivity : AppCompatActivity() { val LAST_LAUN原创 2020-06-28 16:28:37 · 614 阅读 · 0 评论 -
Kotlin_RecyclerView_上拉刷新2
RecyclerView 的上拉刷新加载更多的基本实现 参考上篇:https://blog.youkuaiyun.com/whjk20/article/details/106975642上拉刷新还可以对RecyclerView 添加滑动监听 (addOnScrollListener), 然后通过回调进行模拟数据更新这里主要把加载更多插到RecyclerView 最后, 并非RecyclerView的数据中。1.布局文件 (分开加载中和加载失败)此处省略,跟之前的差异不大,只是分成两个文件2. 数据.原创 2020-06-27 10:48:38 · 543 阅读 · 0 评论 -
Kotlin_RecyclerView_上拉刷新1
RecyclerView 的基本实现参考前篇:https://blog.youkuaiyun.com/whjk20/article/details/106950422现实现 RecyclerView 的上拉刷新原创 2020-06-27 10:33:57 · 664 阅读 · 0 评论 -
Kotlin_RecyclerView_下拉刷新(SwipeRefreshLayout )
RecyclerView 的基本实现参考前篇:https://blog.youkuaiyun.com/whjk20/article/details/106950422现实现 RecyclerView 的下拉刷新, 通过组件SwipeRefreshLayout 实现1. 添加SwipeRefreshLayout 组件依赖包(app 目录build.gradle)implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'2原创 2020-06-26 20:32:41 · 1156 阅读 · 0 评论 -
Kotlin_RecyclerView_多种类型的条目
RecyclerView 多种类型的条目的实现:三种不同类型条目: 只有一张图片、 标题+图片 、 三种图片1. 条目的布局:条目1:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"原创 2020-06-26 18:40:46 · 1194 阅读 · 0 评论 -
Kotlin_RecyclerView_实现ListView效果
package com.example.androidrecyclerviewtest.adapterimport android.content.Contextimport android.util.Logimport android.view.Viewimport android.view.ViewGroupimport android.widget.ImageViewimport android.widget.TextViewimport androidx.recyclerview..原创 2020-06-26 16:52:08 · 935 阅读 · 0 评论 -
Kotlin_MVVM(databinding实现) 计数实例*
简单记录Kotlin 下使用MVVM的例子。实现:模拟数据变化, 更新UI (两个TextView, 一个显示名字,一个显示计数)一、app 目录build.grade 启动 dataBindingandroid { //... dataBinding { enabled = true }}二、创建UserData (M) 和UserViewModelclass UserViewModel : BaseObservable { .原创 2020-06-22 16:39:36 · 1309 阅读 · 0 评论 -
Kotlin_获取网络图片(HttpURLConnection, AsyncTask,协程)
最近学习一下使用Kotlin 从网络获取网络图片,先是学习HttpURLConnection的使用。一、 创建根据URL 获取图片的类class NetworkUtils { private var picture : Bitmap ?= null fun loadPicture(url: URL): Bitmap? { Thread(Runnable { var httpURLConnection: HttpURLConnection =原创 2020-06-15 15:40:58 · 2548 阅读 · 0 评论 -
Kotlin_Android 配置扩展库(减少使用findViewById)
Kotlin 在Android studio 有个很好的功能,就是配置Kotlin 扩展库后,可以在代码里使用控件的id, 而不需要使用findViewById.这样也不需要额外创建和维护控件实例。1. 在项目根目录的build.gradle 下定义 kotlin_version (这样可以适用到多个module)(kotlin版本可以在Setting-> 搜索Kotlin 查看当前版本号),并且添加 kotlin-gradle 插件的依赖build.gradlebuilds原创 2020-06-14 18:21:33 · 538 阅读 · 0 评论 -
Android Studio 创建 Kotlin工程
如果想在Audio Studio 上练习Kotlin 相关的编程,方法跟创建Java工程差不多,参考之前写的帖子https://blog.youkuaiyun.com/whjk20/article/details/52204070但是Kotlin 里的写法稍微有点不一样, 使用 companion object (伴生对象 ) 和 JvmStatic字段,如下class MyKotlin { companion object { @JvmStatic fun m..原创 2020-06-03 15:34:13 · 372 阅读 · 0 评论 -
Kotlin_嵌套类、内部类和匿名内部类
最近使用Kotlin时,发现创建的内部类居然访问不到外部类的成员,了解了一下才发现和Java有点区别Java 普通内部类 static 修饰的内部静态类 Kotlin inner 修饰的内部类 (this@类名 访问外部类成员) 普通内部类(嵌套类) 不可以访问外部类成员 敲个代码加深理解 private fun testNestedAndInnerClass() { //1. 创建内部类 ..原创 2020-06-03 14:46:51 · 527 阅读 · 0 评论 -
Kotlin_作用域函数
1. WhatScope Functions: 作用域函数, Kotlin 标准库函数,目的是在上下文对象内执行一段代码块。该代码块是以lambda表达式的形式,不需使用该对象的名字访问它。(并没有引入新的技术,只是在代码上更简洁)有五种:let, run, with, apply, aslo根据对象引用值 和返回值,可以归纳为以下六种函数 对象引用 返回值 是否为拓展函数 备注 let it lambda表达式结果 是 ...原创 2020-05-13 11:03:58 · 347 阅读 · 0 评论