kotlin
程序员老林
这个作者很懒,什么都没留下…
展开
-
Kotlin实现上传多张图片(包含拍照和相册功能)
效果图:核心代码:清单文件里写上权限:<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.uploadpictures"> <uses-permission android:name="android.permission.IN原创 2021-05-12 16:13:37 · 2346 阅读 · 5 评论 -
Kotlin自定义View实现一个通用的控件
效果图如下:核心代码如下:open class CommonItemView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, mode: Int = MODE_TEXT) : RelativeLayout(context, attrs, defStyleAttr) { companion object { const val原创 2021-05-12 10:48:42 · 1590 阅读 · 0 评论 -
Kotlin实现详情页效果
效果图如下:视频演示:核心代码:class MainActivity : AppCompatActivity() { private lateinit var pictureAdapter: DetailBannerAdapter private lateinit var goodAdapter: GoodAdapter private var pictureSize = 0 private val pic1 = "https://img0.baidu.原创 2021-05-10 17:07:40 · 210 阅读 · 1 评论 -
Kotlin中animateLayoutChanges的使用
实现如下的动画效果:核心代码如下:<RelativeLayout 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:layout_width="match_parent" and原创 2021-05-10 11:08:30 · 294 阅读 · 0 评论 -
Kotlin用容器的方式实现单选和多选
多选的效果图:核心代码如下:class MainActivity : AppCompatActivity() { private val mPopupWindow: FilterPopupWindow by lazy { FilterPopupWindow(this) } private val mList = mutableListOf<String>() override fun onCreate(savedInstanceState: Bund原创 2021-05-08 17:43:02 · 333 阅读 · 0 评论 -
Android和H5相互调用
h5调用app: webview.addJavascriptInterface(object : Object() { @JavascriptInterface fun setPageTitle(title: String) { runOnUiThread { titleTv.text = title }原创 2021-05-08 10:55:33 · 364 阅读 · 0 评论 -
Kotlin实现单选和多选
最终效果:核心代码:object OrderViewCenter { /** * 创建RadioButton */ fun createTripRadioButton(context: Context, radioId: Int): RadioButton { val btn = RadioButton(context) btn.id = radioId val params = RadioGroup.Layo原创 2021-05-07 17:00:52 · 1314 阅读 · 2 评论 -
Kotlin实现根据网络数据实现单选效果
最终的效果展示:核心代码:先准备数据源:class MainActivity : AppCompatActivity() { private var specialRequestOptionList: MutableList<SpecialRequestOptionListBean> = mutableListOf() override fun onCreate(savedInstanceState: Bundle?) { ..原创 2021-05-07 10:55:25 · 208 阅读 · 2 评论 -
内联函数inline
内联函数内联函数的语义很简单:把函数体复制粘贴到函数调用处。inline fun myCalculate(a: Int, b: Int) = a + bfun test() { myCalculate(1, 2) myCalculate(3, 4) myCalculate(5, 6)}用关键字 inline 标记函数,该函数就是一个内联函数。还是原来的 test() 方法,编译器在编译的时候,会自动把内联函数 myCalculate() 方法体内...原创 2020-09-03 10:09:16 · 221 阅读 · 0 评论 -
Kotlin学习之集合
Kotlin严格区分可变集合和不可变集合,要清楚的一点是,区分开可变集合的只读视图与实际上真正不可变的集合override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main20) var stringList: MutableList<String> = mut原创 2020-08-01 10:10:44 · 406 阅读 · 0 评论 -
Kotlin学习之解构声明
解构声明在map中的具体使用 val map = mapOf<String, String>("a" to "aa", "b" to "bb", "c" to "cc") for ((key, value) in map) { println("key:$key,value:$value") } map.mapValues { entry -> "${entry.value} hello" }.forEach原创 2020-08-01 09:41:42 · 282 阅读 · 0 评论 -
Kotlin学习之Lambda表达式和高阶函数
Lambda表达式格式要求:1.一个Lamnbda表达式总是被一对花括号所包围2.其参数位于箭头 ->之前,其参数类型可以省略掉3.执行体位于 -> 之后4.如果函数的最后一个参数是函数,那么可以将 lambda 表达式作为实参传递进去,并且可以在调用时方法圆括号之外去使用val multiply: (Int, Int) -> Int = { a, b -> a * b }这是一个简单的Lambda表达式,Lambda表达式是函数类型,(Int, Int)原创 2020-07-31 11:15:17 · 181 阅读 · 0 评论 -
Kotlin学习之中缀函数infix
函数默认参数函数参数可以有默认值,当省略相应的参数时使用默认值。与其他语言相比,这可以减少重载数量:fun test(a: Int = 0, b: Int = 1) = print(a - b) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main16)原创 2020-07-27 19:58:14 · 393 阅读 · 0 评论 -
Kotlin学习之委托
什么是委托?就是我让A去做一件事情,A自己不去做,而是把这个事情委托给B去完成,B是A的委托。这个是委托的基本概念。类委托interface MyInterface { fun myPrint()}实现这个接口class MyInterfaceImpl(val str: String) : MyInterface { override fun myPrint() { println("welcome" + str) }}接下来看下.原创 2020-07-27 11:26:48 · 167 阅读 · 0 评论 -
Kotlin学习之对象表达式与对象声明
对象表达式的格式:object[:若干个父类型,中间用逗号隔开]{ } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main10) val myObject = object : MyInterface { overrid原创 2020-07-20 17:53:52 · 296 阅读 · 0 评论 -
Kotlin学习之对象表达式
什么是对象表达式Java当中匿名内部类在很多场景下得到了大量的使用,而Kotlin的对象表达式就是为了解决匿名内部类的一些缺陷而产生的我们来回顾一下匿名内部类:既然叫匿名内部类,这个类是没有名字的。 匿名内部类本身一定是继承了某一个父类,或者是实现了某一个接口 Java运行时会将该匿名内部类当做它所实现的接口或者是所继承的父类来看待匿名内部类所提供的功能,对象表达式都可以支持,匿名内部类有的限制,对象表达式可以突破这个限制。对象表达式的格式:object[:若干个父类型,中间用逗原创 2020-07-15 17:44:18 · 319 阅读 · 0 评论 -
Kotlin学习之嵌套类与内部类
嵌套类嵌套类(NestedClass)就是嵌套在另外一个类当中的类,换句话说,我定义一个类,然后在这个类的里面又去定义一个类。在Java里面有内部类的概念。Kotlin和Java这一点是比较类似,但是有一些区别。class OutClass { private val str: String = "hello world" class NestedClass { fun nestedMethod() = "welcome" }}override f.原创 2020-07-04 15:25:45 · 1340 阅读 · 0 评论 -
Kotlin学习之泛型函数和星投影
泛型函数和Java类型,除了泛型类,函数本身也是支持泛型的。 fun <T> getValue(item: T): T { return item }普通的函数是没有<T>这部分内容的,表示这个是泛型函数,拥有一个泛型类型T。 val item = getValue<Int>(100)星投影对于Foo <out T : TUpper>,其中T是一个具有上界TUpper的协变类型参数,F...原创 2020-07-03 17:36:59 · 406 阅读 · 0 评论 -
Kotlin学习之泛型详解
Kotlin:声明处协变 ,在类型参数声明处提供Java:使用处协变,具体使用的时候才声明协变我们随便定义一个泛型如下:class B<T extends CharSequence>{ }这个表示在实例化B的时候你提供的泛型T必须是CharSequence或者CharSequence的子类,这个和Java的使用处协变不是一回事。我们说的使用处协变是下面这种形式B<? extends ...>两种方式不要混为一谈。举个例子:inter原创 2020-07-02 18:00:51 · 388 阅读 · 0 评论 -
Kotlin学习之泛型(协变和逆变实战)
首先看看在Java中@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main4); List<Cat> cats = new ArrayList<>(); List<? extends Animal> anima.原创 2020-06-30 19:43:14 · 246 阅读 · 2 评论 -
Kotlin学习之泛型(协变及逆变)
首先看看在Java中的泛型List<Object> list1;这样声明,表示我可以给list1放置任何类型的对象。List<String> list2;这样表明,list2只可以放置类型是String的对象。但是在java中这样是不允许的List<String> list1 = new ArrayList();List<Object> list2 = list1 ; //编译失败这意味着List<String&g.原创 2020-06-23 18:46:27 · 250 阅读 · 0 评论 -
Kotlin上传相册图片到服务器
打开图库拿到图片 /** * 相册 */ private fun takeGallery() { val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) intent.type = "image/*" startActivityForResult(intent, REQUEST_CODE_PICK_PHO.原创 2020-06-06 15:29:43 · 1584 阅读 · 0 评论 -
Kotlin学习之伴生对象companion object
对象声明我们都知道在在Java中不可能单纯有一个对象存在的,对象一定是通过类来创建它的实例的,通过new这个关键字来创建一个类的对象,这样呢,这个对象才会在内存当中创建出来。在Kotlin当中,有这么一个新的概念,可以直接声明个对象,我们定义一个类用class关键字,我们声明一个对象就用object关键字。它的语法呢和Kotlin类的语法是极为相似的。object MyObject{ }这就是对象声明,并且它总是在 object 关键字后跟⼀个名称。表示我声明了一个对象,对象的.原创 2020-06-05 20:30:02 · 666 阅读 · 0 评论 -
kotlin学习之构造函数
在 Kotlin 中的一个类可以有一个主构造函数以及一个或多个次构造函数。主构造函数是类头的一部分:它跟在类名后面。主构造函数class Person constructor(username:String){}如果主构造函数没有任何注解或者可见性修饰符(private、public之类的修饰符),可以省略这个constructor关键字。class Person (username:String){}主构造函数不能包含任何的代码。初始化的代码可以放到以init关...原创 2020-06-04 14:45:30 · 540 阅读 · 0 评论 -
Kotlin的作用域函数 let、also、with、run、apply
作用域函数主要有下面这几种,它们的主要区别就是函数体内使用对象和返回值的区别。apply函数使用方法val list = ArrayList<String>()list.apply{ add("A") add("B") add("C")}run函数使用方法object.run{// ... }// 返回值 = 函数块的最后一行 / return表达式使用示例// 此处要调用people的name 和 age属性,且要判空// kotl.原创 2020-06-01 20:28:21 · 472 阅读 · 0 评论 -
Kotlin 回调函数
高阶函数的概念:参数有函数类型或者返回值是函数类型的函数.那么什么是函数类型呢?函数类型可以有各种各样不同的参数和返回值的类型的搭配,这些搭配属于不同的函数类型。例如:(() -> Unit) 无参数无返回值String (Int -> String) 单 Int 型参数返回 既然函数有类型了,那我们用函数声明变量吧,它和用基本类型,用类声明变量是一样的var myfun : (Int, Int) -> Int /..原创 2020-05-30 13:39:30 · 2470 阅读 · 0 评论