Kotlin从零到一无所有
文章平均质量分 81
Errol_King
这个作者很懒,什么都没留下…
展开
-
【kotlin】高阶函数详解
如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数这就涉及到另一个概念了:函数类型。下面学习一下如何定义一个函数类型原创 2020-10-31 15:18:08 · 4148 阅读 · 3 评论 -
【kotlin】扩展函数和运算符重载
扩展函数扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数如果想统计字符串中字母的数量,你可能会写出如下函数:object StringUtil { fun letterCount(string: String):Int{ var count = 0 for(str in string){ if(str.isLetter()){ count++ }原创 2020-09-01 17:47:26 · 389 阅读 · 0 评论 -
【kotlin】延迟初始化和密封类
文章目录延迟初始化使用密封类优化代码延迟初始化RecyclerView基本使用 中最后 MainActivity 中class MainActivity : AppCompatActivity(),View.OnClickListener { ... private var adapter: MsgAdapter? = null override fun onCreate(savedInstanceState: Bundle?) { ... a原创 2020-08-28 11:43:26 · 313 阅读 · 0 评论 -
【Kotlin】Java 函数式 API 的使用
我们之前学了 Kotlin 中函数式 API 的用法,但实际上 Kotlin 调用 Java 方法时也可以使用函数式 API,只不过有一定条件限制。具体来讲,如果我们在 Kotlin 代码中调用了一个 Java 方法,并且该方法接收一个 Java 单抽象方法接口参数,就可以使用函数式 APIJava 单抽象方法接口指的是接口中只有一个待实现方法。如果接口中有多个待实现方法,则无法使用函数式 API举个栗子:Java 原生 API 中有一个最常见的单抽象方法接口 Runnable 接口,这个接口只有一个待原创 2020-08-19 11:02:55 · 464 阅读 · 0 评论 -
【Kotlin】可见性修饰符详解
Java中有public、private、protected和default (什么都不 写)这4种函数可见性修饰符。Kotlin 中也有4种,分别是public、private、 protected 和internal,需要使用哪种修饰符时,直接定义在fun关键字的前面即可。下面详细介绍一下 Java和Kotlin中这些函数可见性修饰符的异同首先private修饰符在两种语言中的作用是一模一样的, 都表示只对当前类内部可见public修饰符的作用虽然也是一致的,表示对所有类都可见,但是在Kotlin中原创 2020-08-15 14:38:28 · 653 阅读 · 0 评论 -
【Kotlin】第三方支付
新建kotlin项目AlipayProject引入anko原创 2020-01-15 13:19:34 · 494 阅读 · 0 评论 -
【Kotlin】热修复
使用AndfixAS创建kotlin项目AndroidManifest增加权限<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />activity_main.xml放一个TextView <TextView android:id="@+id/tv_r...原创 2020-01-14 15:16:23 · 858 阅读 · 0 评论 -
【Kotlin】增量更新
接下来的栗子在AS中进行。使用 Kotlin 进行 Android 开发引入Anko创建新kotlin项目SmartAppUpdate,首先我们引入Anko。Github地址首先app/build.gradle引入implementation "org.jetbrains.anko:anko:$anko_version"然后项目下的build.gradle的build.script增...原创 2020-01-13 11:09:47 · 612 阅读 · 0 评论 -
【Kotlin】加密解密5:数字签名
Api文档搜索SignatureRSACrypt封装一个返回privatekey和publickey的方法 fun getPrivateKey():PrivateKey{ //保存密钥对 val privateKeyString = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCcEBoTuOL3Op...原创 2020-01-11 11:51:57 · 1801 阅读 · 0 评论 -
【Kotlin】加密解密4:消息摘要
消息摘要原创 2020-01-10 17:27:21 · 425 阅读 · 0 评论 -
【Kotlin】加密解密3:非对称加密RSA
看之前的api文档,AES/DES是加密算法,中间的是工作模式,最后的是填充模式原创 2019-12-26 08:23:09 · 776 阅读 · 0 评论 -
【Kotlin】加密解密2:DES、AES加密和解密
文章目录AES加密解密DES和AES密钥长度AES加密解密object AESCrypt{ //加密 fun encrypt(input:String,password:String): String { //创建cipher对象 val cipher = Cipher.getInstance("AES") //初始化:加密/解密...原创 2019-12-25 16:28:18 · 2111 阅读 · 0 评论 -
【Kotlin】加密解密1:凯撒加密
文章目录ASCII举个栗子:获取a的ascii举个栗子:获取多个字符的ascii凯撒加密算法ASCII新建AsciiDemo.kt举个栗子:获取a的asciifun main(args:Array<String>) { //获取字符ascii编码 val c: Char = 'a' //字符转成十进制 val value: Int = c...原创 2019-12-24 09:18:10 · 511 阅读 · 0 评论 -
【Kotlin】坦克大战11:打包游戏
1原创 2019-12-23 09:11:22 · 656 阅读 · 1 评论 -
【Kotlin】坦克大战10:游戏结束
销毁后特效销毁后显示特效,所以在Destroyable中增加一个showDestroy()方法interface Destroyable : View { //判断是否销毁了 fun isDestroyed(): Boolean //挂掉的效果 fun showDestroy():Array<View>?{ return null ...原创 2019-12-19 17:00:00 · 327 阅读 · 0 评论 -
【Kotlin】坦克大战9:大本营绘制
大本营的位置如图所示:中间有一只老鹰的图标,左,上,右都有砖墙新建Camp/** * 大本营 */class Camp(override val x: Int, override val y: Int) : View { override val width: Int = Config.block * 2 override val height: Int = Co...原创 2019-12-18 15:43:58 · 437 阅读 · 0 评论 -
【Kotlin】坦克大战8:敌方坦克发射
创建AutoShot/** * 自动射击的能力 */interface AutoShot { //自动射击的功能 fun autoShot(): View?}Enemy实现这个接口,重写autoShot方法(Tank中有相同代码,抄一抄)class Enemy(override var x: Int, override var y: Int) :Moveable, ...原创 2019-12-17 17:33:23 · 280 阅读 · 0 评论 -
【Kotlin】坦克大战7:敌方坦克创建
敌方坦克绘制创建Enemy,我们之前创建了很多特性,我们可以仿照Tank文件来写,实现Moveable,关于绘制可以直接把Tank的绘制方法拿过来,换张图片即可/** * 敌方坦克 */class Enemy(override val x: Int, override val y: Int) :Moveable { override val currentDirection: D...原创 2019-12-14 15:33:21 · 417 阅读 · 1 评论 -
【Kotlin】坦克大战6:攻和受
不要乱想了。开始写代码创建两个接口Attackable、SufferableGameWindow的业务逻辑中添加在这里插入代码片原创 2019-12-13 17:29:35 · 438 阅读 · 0 评论 -
【Kotlin】坦克大战5:让子弹飞
子弹飞是一种能力,新建AutoMoveable接口/** * 自动移动的能力 */interface AutoMoveable : View { //方向 val currentDirection:Direction //速度 val speed:Int fun autoMove()}让子弹实现这个接口class Bullet(override v...原创 2019-12-13 16:33:08 · 363 阅读 · 0 评论 -
【Kotlin】坦克大战4:子弹绘制
文章目录子弹发射子弹发射当按下Enter键时,发射子弹,修改GameWindow.kt中onKeyPressed方法 override fun onKeyPressed(event: KeyEvent) { //用户操作时 when(event.code){ ...... KeyCode.ENTER ->...原创 2019-12-12 16:20:51 · 1207 阅读 · 0 评论 -
【Kotlin】坦克大战3:移动和碰撞检测
移动原创 2019-12-10 10:48:03 · 641 阅读 · 0 评论 -
【Kotlin】坦克大战2:地图和我方坦克绘制
新建一个Wall类class Wall { //位置 var x:Int = 100 var y:Int = 100 //宽高 var width:Int = Config.block var height:Int = Config.block //显示行为 fun draw(){ Painter.drawIma...原创 2019-12-06 16:53:57 · 864 阅读 · 0 评论 -
【Kotlin】坦克大战1:窗体绘制
文章目录项目搭建游戏的基本内容项目搭建新建一个项目引入坦克大战游戏引擎,按照github上的说明添加依赖即可,添加成功后新建MyWindow.kt/** * 窗体 * 继承游戏引擎中的窗体 */class MyWindow:Window(){ override fun onCreate() { } override fun onDisplay(...原创 2019-12-06 14:20:14 · 673 阅读 · 0 评论 -
【Kotlin】Gradle自定义扩展
文章目录gradle调用内部扩展deletecopygradle调用外部扩展gradle调用内部扩展官方文档delete找到任务类型Task types,找到delete页面中有groovy语法的示例代码,这里展示kotlin语法假设main文件夹下有temp目录,里边有很多生成的临时文件编写任务task("mydelete",Delete::class,{ setDe...原创 2019-12-05 16:29:07 · 625 阅读 · 0 评论 -
【Kotlin】Gradle依赖管理
文章目录普通程序员高级程序员普通程序员commons-httpclient-3.0-src.zip下载用Eclipse新建一个kotlin项目,同时新建一个libs文件夹,把jar包放入然后右键jar包-Build Path-Add to Build Path官网tutorial按照官方文档的写法我们写一个下载图片的代码import org.apache.commons.httpc...原创 2019-11-20 13:26:25 · 2081 阅读 · 0 评论 -
【Kotlin】Gradle的增量式更新
现在目录下有三个java文件,我们要写一个task来保存所有文件名和路径build.gradle.ktsplugins{ java}//把所有源代码的文件名称记录下来task("getSrcName",{ doFirst{ var srcdir = fileTree("src") var infotxt = file("info.txt...原创 2019-11-20 10:27:12 · 391 阅读 · 0 评论 -
Kotlin从零到一无所有
文章目录Kotlin基础GradleKotlin基础Eclipse和kotlin插件安装数据类型和变量函数和命令行交互式终端字符串when、for循环、loop和rangeList和Map默认参数和具名参数人机交互和异常处理递归和尾递归面向对象、封装、继承、多态接口和抽象类委托和代理、单例枚举和印章类高阶函数图片处理data classGradleG...原创 2019-11-16 14:56:36 · 503 阅读 · 0 评论 -
【Kotlin】Gradle中的任务
编写一个Task任务的依赖Task的生命周期Tasks任务集Gradle的默认任务Gradle属性Gradle默认任务原创 2019-11-16 14:41:56 · 1485 阅读 · 0 评论 -
【Kotlin】Gradle对比Eclipse传统打包
文章目录原始人的操作Gradle原始人的操作我们用Eclipse编写程序public class Girl { //TDD 测试驱动开发 public String greeting() { return "Hello"; }}public class HelloWorld { @Test public void testGreeting() { Girl girl...原创 2019-11-15 10:53:22 · 509 阅读 · 0 评论 -
【Kotlin】数据类 data class、copy、componentN函数
文章目录data class应用场景data class为我们做了什么copy函数componentN函数-解构声明(Destructuring Declarations)两个等号`==`和三个等号`===`data class应用场景创建一些类除了保存数据不干其他事情,比如我们解析网络请求下来的数据。Kotlin就提供了一个非常方便的class—— data class,就像上边的栗子d...原创 2019-11-15 09:49:52 · 4994 阅读 · 0 评论 -
【Kotlin】图片处理
了解了以上基础知识,我们来创建一个图片import java.awt.image.BufferedImageimport javax.imageio.ImageIOimport java.io.Filefun main(args: Array<String>) { //宽度、高度、图片的类型 //内存中创建一个宽高都为100的图片 var image = Buf...原创 2019-11-14 13:56:42 · 1091 阅读 · 0 评论 -
【Kotlin】高阶函数
栗子var print = fun (name:String):Unit{ println(name)}fun main(args: Array<String>) { var names = listOf<String>("Tom,Jerry,Lucy") //forEach接收的参数为一个函数 names.forEach(print)}运行结果...原创 2019-11-14 11:57:16 · 1330 阅读 · 1 评论 -
【Kotlin】枚举和印章类
印章类又称为密封类,用来表示受限的类继承结构:当一个值为有限几种的类型, 而不能有任何其他类型时。使用sealed关键字修饰类,印章类可以有子类,但是所有的子类都必须要内嵌在印章类中现有母驴、公驴、公马只动物母驴+公驴=驴子母驴+公马=骡子我们创建一个Son class来形容三只动物的儿子,由于只能是驴子,或骡子,所以我们加关键字sealedfun main(args: Array<...原创 2019-11-12 16:03:27 · 261 阅读 · 0 评论 -
【Kotlin】委托和代理、单例
文章目录委托和代理单例委托和代理我们创建一个IWashBowl接口,里边有一个洗碗的方法interface IWashBowl { fun washing()}现在有大头儿子和小头爸爸,大头儿子洗碗赚1块钱,小头爸爸赚10块钱class BigHeadSon:IWashBowl { override fun washing(){ println("我是大头儿子,我洗碗赚1块...原创 2019-11-12 15:28:26 · 276 阅读 · 0 评论 -
【kotlin】接口和抽象类
我们来定义一个接口,new一个Kotlin Interface,名字为IManinterface IMan { fun joyride()}然后新建一个Man类,实现刚才的IMan接口class Man:IMan { override fun joyride(){ println("我在飙车") }}编写测试代码fun main(args: Array<Stri...原创 2019-11-04 17:31:11 · 463 阅读 · 0 评论 -
【kotlin】面向对象、封装、继承、多态
fun main(args: Array<String>) { var rect01 = Rect(20,10) println("矩形的宽度:"+rect01.width+",矩形的高度:"+rect01.height)}class Rect(var width:Int,var height:Int)fun main(args: Array<String>...原创 2019-10-31 13:18:17 · 349 阅读 · 0 评论 -
【kotlin】递归和尾递归
文章目录递归尾递归优化递归我们来算一下5的阶乘fun main(args: Array<String>) { //5的阶乘:5*4*3*2*1 var num = 5 println(fact(num))}fun fact(num:Int):Int{ if(num == 1){ return 1 }else{ return num*fact(num-1)...原创 2019-10-30 10:25:18 · 677 阅读 · 0 评论 -
【kotlin】人机交互和异常处理
我们从键盘输入两个数字,然后打印它们的和首先先得到从键盘输入的字符串 println("请输入第一个数字") var num1Str = readLine() println("请输入第二个数字") var num2Str = readLine()然后转数字我们发现报错了,因为num1Str和num2Str都有可能为空,所以我们加上一个? var num1 = num1St...原创 2019-10-29 10:24:13 · 228 阅读 · 0 评论 -
【kotlin】默认参数和具名参数
我们来计算一个半径为2.0f的圆的周长fun main(args: Array<String>) { println(getCircleArea(3.14f,2.0f))}//获取长方形面积fun getRectArea(x:Float,y:Float):Float{ return x*y}//根据半径获取圆周长fun getCircleArea(PI:Floa...原创 2019-10-29 09:56:12 · 547 阅读 · 0 评论