![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kotlin
文章平均质量分 57
乌克丽丽丶
会当凌绝顶,一览众山小!
展开
-
Android gradle统一依赖版本:Composing builds
之前写过一篇Android gradle统一依赖版本:kotlin+buildSrc的集成使用,标题两者的区别可以参照再见吧 buildSrc, 拥抱 Composing builds 提升 Android 编译速度原创 2021-09-16 17:03:37 · 1016 阅读 · 3 评论 -
Android mPaaS 接入流程
官方接入文档提前准备工作,Android Studio中安装mPaaS插件,安装完成之后,重启Android Studio1. 首先登录 阿里云产品页使用支付宝扫码登录即可,实名认证也用支付宝扫码认证就可以。1)点击创建应用,输入应用名称创建完之后是这样的2)点击上图的Android代码配置:3)点击上图的下载配置文件:4)输入右边框里的Package Name(应用包名),上传带签名的apk,然后点击下载配置:下载完之后解压出来的文件是这样的:5)点击Android原创 2021-07-21 18:01:29 · 2696 阅读 · 4 评论 -
Android Activity Result API 使用
1.在app下的build.gradle引入:implementation 'androidx.activity:activity:1.2.0-beta01'implementation 'androidx.fragment:fragment:1.3.0-beta01'2.页面普通跳转(原startActivityForResult)(1)第一个页面:class MainActivity : AppCompatActivity() { private lateinit var text原创 2021-07-20 15:05:06 · 1202 阅读 · 5 评论 -
Kotlin中@JvmOverloads、@JvmStatic、@JvmField、@JvmName、@JvmMultifileClass
1. @JvmOverloads一句话就是为了解决Java不能重载kotlin 有默认参数的方法比如Kotlin代码如下调用是没有问题的:class Test { fun testJvm(a: String, b: Int = 1) { } fun abc() { testJvm("a") testJvm("a", 3) }}但是如果java中调用:class TestJava { private void tt原创 2021-05-10 13:22:39 · 1656 阅读 · 3 评论 -
Android gradle统一依赖版本:kotlin+buildSrc
步骤:在项目根目录下新建一个名为buildSrc的文件夹(与项目里的app文件夹同级)。在buildSrc文件夹里创建名为build.gradle.kts的文件在buildSrc文件夹里创建src/main/java文件夹,如下图所示。并在该文件夹下创建Dependencies.kt文件1. 项目根目录创建文件夹 buildSrc,与app同级,然后新建如下文件夹以及文件:以下直接复制即可build.gradle.kts:plugins { `kotlin-dsl`}rep原创 2021-04-14 11:30:41 · 1944 阅读 · 0 评论 -
Android Studio gradle 统一版本管理
一、第一种方式:1.在项目的根目录下面创建一个 xxx.gradle 文件,名字可以自定义,比如 versions.gradle2.在versions.gradle里面添加如下依赖:ext { //app相关的版本 android = [ compileSdkVersion: 30, minSdkVersion : 23, targetSdkVersion : 30, version原创 2021-01-28 10:56:42 · 1838 阅读 · 1 评论 -
Android 自定义随意拖拽布局
效果图如下:1. 自定义view如下:package com.example.myapplicationimport android.content.Contextimport android.util.AttributeSetimport android.view.MotionEventimport android.widget.RelativeLayoutimport kotlin.math.absclass CustomDragView @JvmOverloads constru原创 2021-01-27 13:51:28 · 2262 阅读 · 0 评论 -
Android CameraX 使用
1.使用限制需要依赖最低 API 是21,也就是Android5.0。Android Studio 版本 3.6 及以上2. 在app下的build.module的dependencies中添加如下依赖: def camerax_version = "1.0.0-beta07"// CameraX core library using camera2 implementation implementation "androidx.camera:camera-camera2:$camer原创 2021-01-25 15:11:14 · 3497 阅读 · 5 评论 -
解决Android Studio gradle 下载失败的问题
遇到Android Studio下载gradle 慢或者下载失败的问题,解决方案如下:1.到项目目录下的gradle文件夹下的wrapper文件夹,下面的 gradle-wrapper.properties, 打开该文件,将distributionUrl后面的地址复制出来复制内容: https://services.gradle.org/distributions/gradle-5.6.4-all.zip注意要去掉https后面的斜线!2.然后将该地址使用浏览器打开,或者使用迅雷创建下载,我是使原创 2021-01-18 15:33:28 · 4116 阅读 · 0 评论 -
Kotlin使用Parcelable序列化数据类
一、正常使用:data class User( val name: String?, val sex: String?, val age: Int): Parcelable { constructor(parcel: Parcel) : this( parcel.readString(), parcel.readString(), parcel.readInt() ) { } overri原创 2021-01-04 14:24:27 · 3488 阅读 · 2 评论 -
Kotlin关键字
let扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。...原创 2020-03-27 09:08:47 · 331 阅读 · 0 评论 -
Kotlin delay与sleep
delay:协程的延时是不会阻塞线程的,只会延时当前协程sleep:阻塞线程原创 2020-03-27 09:09:00 · 13669 阅读 · 3 评论 -
Kotlin使用委托模式封装SharedPreferences工具类
1. 工具类封装:class SPreference<T>(private val name: String, private val default: T) : ReadWriteProperty<Any?, T> { companion object { lateinit var preference: SharedPreferences fun setContext(context: Context) {原创 2020-11-17 16:40:23 · 855 阅读 · 0 评论 -
Kotlin 接口回调示例
1. 只有一个方法时://接口定义:private var onDeleteListener: ((String) -> Unit)? = null fun setOnDeleteListener(onDeleteListener: ((String) -> Unit)) { this.onDeleteListener = onDeleteListener } // 使用onDeleteListener?.invoke("delete")原创 2020-09-22 09:34:15 · 1138 阅读 · 0 评论 -
Android UDP socket模拟聊天的示例
Client Afun main() { Thread(Runnable { receive() }).start() send()}// A接收消息private fun receive() { print("Client A Receiver Start...") //1.创建udp的socket服务,并声明端口号 val ds = DatagramSocket(6666) //无限循环,一直处于接收状态 whi原创 2020-09-19 16:33:41 · 246 阅读 · 0 评论 -
Android Studio4.0引入arr包和jar包方式
Android Studio升级到 4.0 并且gradle_plugin 也更新到4.0.0,之后引入jar包和arr包的方式有所变更。1.File -> New -> New Module引入完成之后可以根据自己的习惯 添加一个新的文件夹存放 arr和jar 如图:然后将引入的arr或jar包拷贝到这下面。2.在使用到的module下的 build.gradle:api project(":arr名称")3.在项目下的settings.gradle中引入:include原创 2020-06-05 18:17:56 · 5227 阅读 · 7 评论 -
Android 10 获取相册图片失败: open failed: EACCES
Android10获取相册图片失败原创 2020-04-21 15:38:25 · 4284 阅读 · 7 评论 -
Kotlin使用Gson解析本地json数据
1.本地res文件夹下新建一个raw文件夹,json文件放进去。1)java加载方式:public class StreamUtils { public static String get(Context context, int id) { InputStream stream = context.getResources().openRawResource(id); retu...原创 2019-12-10 16:12:36 · 2928 阅读 · 0 评论 -
Kotlin 对象声明,伴生对象,对象表达式
1.对象声明Kotlin 使用 object 关键字来声明一个对象。Kotlin 中我们可以方便的通过对象声明来获得一个单例。 object Dog{ fun eat(){ println("Eat food") } } fun main() { Dog.eat() }2.伴生对象类内部的...原创 2019-12-05 14:54:31 · 426 阅读 · 0 评论 -
Kotlin单例模式
1.Object使用对象声明 objectobject Singleton { const val a = 1 var b = 2 fun add(): Int { return a + b }}直接用object代替class修饰类就是单例,对应的java代码就是:public final class Singleton { pu...原创 2019-12-05 14:22:22 · 376 阅读 · 0 评论 -
Kotlin判断一个数组中是否有相同的元素
1.如果只是需要判断是否包含相同元素而不是要找出相同元素有哪些,直接放在set集合中,然后看set集合和数组长度是否一致即可fun main() { val array = arrayOf(1, 7, 2, 4, 9, 2) val sameSet = mutableSetOf<Int>() for (item in array){ sameS...原创 2019-12-05 10:04:02 · 5701 阅读 · 0 评论 -
Android notifyDataSetChanged()数据没有刷新
如果adapter添加的list是通过构造方法传递过去的,这个list不能重新赋值,不然指向的内存地址就发生了改变,adapter刷新是监听的数据的内存,该内存的数据发生变化之后 调用notifyDataSetChanged才会刷新,改变了内存地址就不会刷新。可以通过操作list.clear(), 然后list.addAll(dataList), 再或者通过set方法把数据源传递给adapter....原创 2019-11-30 14:15:20 · 839 阅读 · 0 评论 -
Kotlin作用域函数 let、run、with、apply 以及 also
一、区别由于作用域函数本质上都非常相似,因此了解它们之间的区别很重要。每个作用域函数之间有两个主要区别:–引用上下文对象的方式–返回值1.上下文对象:this 还是 it(1)thisrun、with 以及 apply 通过关键字 this 引用上下文对象。因此,在它们的 lambda 表达式中可以像在普通的类函数中一样访问上下文对象。在大多数场景,当你访问接收者对象时你可以省略 ...原创 2019-11-23 15:00:06 · 242 阅读 · 0 评论