zm.blog

select * from learn


  • 首页

  • 标签

  • 分类

  • 归档

  • 关于

  • 搜索

Kotlin继承

发表于 2020-09-17 | 分类于 Android , Kotlin | | 阅读次数:

Kotlin 继承

Kotlin 中所有类都继承该 Any 类,它是所有类的超类,对于没有超类型声明的类是默认超类:

1
class Example // 从 Any 隐式继承

Any 默认提供了三个函数:

1
2
3
4
5
equals()

hashCode()

toString()

注意:Any 不是 java.lang.Object。

如果一个类要被继承,可以使用 open 关键字进行修饰。

1
2
3
open class Base(p: Int)           // 定义基类

class Derived(p: Int) : Base(p)

构造函数

子类有主构造函数

如果子类有主构造函数, 则基类必须在主构造函数中立即初始化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
open class Person(var name : String, var age : Int){// 基类

}

class Student(name : String, age : Int, var no : String, var score : Int) : Person(name, age) {

}

// 测试
fun main(args: Array<String>) {
val s = Student("Runoob", 18, "S12346", 89)
println("学生名: ${s.name}")
println("年龄: ${s.age}")
println("学生号: ${s.no}")
println("成绩: ${s.score}")
}

输出结果:

1
2
3
4
学生名: Runoob
年龄: 18
学生号: S12346
成绩: 89
阅读全文 »

Kotlin类和对象

发表于 2020-09-17 | 分类于 Android , Kotlin | | 阅读次数:

类定义

Kotlin 类可以包含:构造函数和初始化代码块、函数、属性、内部类、对象声明。

Kotlin 中使用关键字 class 声明类,后面紧跟类名:

1
2
3
class Runoob {  // 类名为 Runoob
// 大括号内是类体构成
}

我们也可以定义一个空类:

1
class Empty

可以在类中定义成员函数:

1
2
3
class Runoob() {
fun foo() { print("Foo") } // 成员函数
}

类的属性

属性定义

类的属性可以用关键字 var 声明为可变的,否则使用只读关键字 val 声明为不可变。

1
2
3
4
5
class Runoob {
var name: String = ……
var url: String = ……
var city: String = ……
}

我们可以像使用普通函数那样使用构造函数创建类实例:

1
val site = Runoob() // Kotlin 中没有 new 关键字

要使用一个属性,只要用名称引用它即可

1
2
site.name           // 使用 . 号来引用
site.url

Koltin 中的类可以有一个 主构造器,以及一个或多个次构造器,主构造器是类头部的一部分,位于类名称之后:

1
class Person constructor(firstName: String) {}

如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。

1
2
class Person(firstName: String) {
}
阅读全文 »

Kotlin循环控制

发表于 2020-09-16 | 分类于 Android , Kotlin | | 阅读次数:

For 循环

for 循环可以对任何提供迭代器(iterator)的对象进行遍历,语法如下:

1
for (item in collection) print(item)

循环体可以是一个代码块:

1
2
3
for (item: Int in ints) {
// ……
}

如上所述,for 可以循环遍历任何提供了迭代器的对象。

如果你想要通过索引遍历一个数组或者一个 list,你可以这么做:

1
2
3
for (i in array.indices) {
print(array[i])
}

注意这种”在区间上遍历”会编译成优化的实现而不会创建额外对象。

或者你可以用库函数 withIndex:

1
2
3
for ((index, value) in array.withIndex()) {
println("the element at $index is $value")
}
阅读全文 »

Kotlin条件控制

发表于 2020-09-16 | 分类于 Android , Kotlin | | 阅读次数:

IF 表达式

一个 if 语句包含一个布尔表达式和一条或多条语句。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 传统用法
var max = a
if (a < b) max = b

// 使用 else
var max: Int
if (a > b) {
max = a
} else {
max = b
}

// 作为表达式
val max = if (a > b) a else b

我们也可以把 IF 表达式的结果赋值给一个变量。

1
2
3
4
5
6
7
val max = if (a > b) {
print("Choose a")
a
} else {
print("Choose b")
b
}

这也说明我也不需要像Java那种有一个三元操作符,因为我们可以使用它来简单实现:

1
val c = if (condition) a else b
阅读全文 »

Android_Material组件使用详解

发表于 2020-09-11 | 分类于 Android , Android Tips | | 阅读次数:

Android官方为开发者提供了许多丰富的UI控件,Material 组件就是包含了这些控件的一套工具,多数时候使用它可以满足我们日常开发UI的需求,提高效率。目前Android Material 组件已经更新了1.2.0稳定版,赶紧来了解一波。

导入依赖,就可以开始了。

1
implementation 'com.google.android.material:material:1.2.0'

MaterialButton

我们平时写布局,当遇到按钮需要圆角、或者描边等,通常的方法是新建一个xml文件,在shape标签下写,然后通过android:background或setBackground(drawable)设置。

这本来没什么问题,但是UI设计师会喜欢看起来和别人不一样的效果,也许是为了审(zhuang)美(bi),例如这个页面用4dp的圆角,那个页面用10dp的圆角,要有描边,颜色还不太一样……如果我们每个界面都新建个xml写shape,那么后期项目大了,维护起来就像无底洞……

那么有没有这样一个控件,能在xml直接配置圆角、描边属性,满足平时开发的基本UI需求?当然有,GitHub上第三方的库大把。不过Google官方在SDK28的时候也推出了一个新控件 —— MaterialButton,但是我发现很多人还不知道,今天就来安利下。

先来看一波效果图:

阅读全文 »

Kotlin基本数据类型

发表于 2020-09-08 | 分类于 Android , Kotlin | | 阅读次数:

Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。

类型 位宽度
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

字面常量

下面是所有类型的字面常量:

  • 十进制:123
  • 长整型以大写的 L 结尾:123L
  • 16 进制以 0x 开头:0x0F
  • 2 进制以 0b 开头:0b00001011
  • 注意:8进制不支持

Kotlin 同时也支持传统符号表示的浮点数值:

  • Doubles 默认写法: 123.5, 123.5e10
  • Floats 使用 f 或者 F 后缀:123.5f

你可以使用下划线使数字常量更易读:

1
2
3
4
5
val oneMillion = 1_000_000
val creditCardNumber = 1234_5678_9012_3456L
val socialSecurityNumber = 999_99_9999L
val hexBytes = 0xFF_EC_DE_5E
val bytes = 0b11010010_01101001_10010100_10010010

阅读全文 »

Kotlin基础语法

发表于 2020-08-31 | 分类于 Android , Kotlin | | 阅读次数:

Kotlin 文件以 .kt 为后缀。

包声明

代码文件的开头一般为包的声明:

1
2
3
4
5
6
package com.runoob.main

import java.util.*

fun test() {}
class Runoob {}

kotlin源文件不需要相匹配的目录和包,源文件可以放在任何文件目录。

以上例中 test() 的全名是 com.runoob.main.test、Runoob 的全名是 com.runoob.main.Runoob。

如果没有指定包,默认为 default 包。

默认导入

有多个包会默认导入到每个 Kotlin 文件中:

  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.*
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

阅读全文 »

Kotlin使用命令行编译

发表于 2020-08-29 | 分类于 Android , Kotlin | | 阅读次数:

Kotlin 使用命令行编译

Kotlin 命令行编译工具下载地址:https://github.com/JetBrains/kotlin/releases/tag/v1.1.2-2,目前最新为 1.1.2-2。

你可以选择一个最新的稳定版下载。

下载完成后,解压到指定目录,然后将 bin 目录添加到系统环境变量。bin 目录包含编译和运行 Kotlin 所需的脚本。


SDKMAN!

在 OS X、Linux、Cygwin、FreeBSD 和 Solaris 系统上也可以使用更简单的安装方法,命令如下:

1
2
3
$ curl -s https://get.sdkman.io | bash

$ sdk install kotlin

Homebrew

在 OS X 下,你可以使用 Homebrew 安装:

1
2
$ brew update
$ brew install kotlin

MacPorts

如果你是 MacPorts 用户,可以使用以下命令安装:

1
$ sudo port install kotlin

阅读全文 »

Kotlin教程

发表于 2020-08-29 | 分类于 Android , Kotlin | | 阅读次数:

Kotlin 教程

Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。

Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。

在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。


Kotlin 程序

Kotlin 程序文件以 .kt 结尾,如:hello.kt 、app.kt。

最简版

1
2
3
4
5
package hello                      //  可选的包头

fun main(args: Array<String>) { // 包级可见的函数,接受一个字符串数组作为参数
println("Hello World!") // 分号可以省略
}

面向对象

1
2
3
4
5
6
7
8
9
class Greeter(val name: String) {
fun greet() {
println("Hello, $name")
}
}

fun main(args: Array<String>) {
Greeter("World!").greet() // 创建一个对象不用 new 关键字
}

为什么选择 Kotlin?

  • 简洁: 大大减少样板代码的数量。
  • 安全: 避免空指针异常等整个类的错误。
  • 互操作性: 充分利用 JVM、Android 和浏览器的现有库。
  • 工具友好: 可用任何 Java IDE 或者使用命令行构建。

参考链接

  • 官方网站
  • 官方示例
  • 官方网站 - 中文翻译
  • Kotlin 官方在线工具
  • Kotlin 在线工具
阅读全文 »

Flutter插件开发指南

发表于 2020-08-26 | 分类于 Android , Flutter Tips | | 阅读次数:

Flutter插件开发

创建插件目录

1
2
3
4
flutter create -i objc -a java --template=plugin demo

-i, 表示指定iOS的语言, objc, swift
-a, 表示指定安卓的语言, java, kotlin

通过上面命令,创建一个名为demo的plugin模板, 并生成以下目录结构

目录结构

1
2
3
4
5
- android // 插件相关 Android 代码
- ios // 插件相关 iOS 代码
- lib // 插件相关 Dart 代码
- example // 示例项目, 用于调试当前开发的插件
- pubspec.yaml // 插件配置文件
阅读全文 »
1…456…38
ZhangMiao

ZhangMiao

Android/Flutter Developer

379 日志
58 分类
143 标签
RSS
E-Mail QQ Github StackOverflow
友情链接
  • Kaisir
  • Liujianhui
  • Leo
  • Hongyang
  • Liuwangshu
  • Jspang
  • Blankj
  • WuXiaoLong
  • Molunerfinn
  • Ofind
  • Gcssloop
© 2024 ZhangMiao
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
本站访客数 人次 本站总访问量 次