自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 SpannableString在多语言中的应用

解决SpannableString在多语言下导致不能确定起始位置startIndex的问题。

2021-03-13 23:43:57 594

原创 优雅地在Activity启动的时获取View的宽高

有时候我们会有这么的一个需求“在Activity启动时获取某个View的宽高”。这时候我们很容易就会直接在onCreate()或者onResume()里边去获取这个View的宽/高。实际上在onCreate()、onStart()、onResume()里均无法正确得到某个View的宽/高信息,这是因为View的measure过程和Activity的生命周期方法不是同步执行的,如果View还没有测量完毕,那么获得的宽/高就是0。以下有四种方法来解决这个问题。1、Activity/View#onWindow

2021-03-11 00:45:27 234

原创 Kotlin之成员引用

一、认识成员引用让我们来想一想这么的一个场景“当你想要当作参数传递的代码已经被定义成了函数”,该怎么办?当然,我们可以传递一个调用这个函数的lambda。但是这样做有点多余,可以通过直接传递函数来简化我们的代码。Kotlin和Java 8一样,可以把函数转换成一个值,并传递它。使用::运算符来进行转换。让我们来看一个简单的例子,手动实现成员引用,定义一个Person类,代码如下:class Person { var age: Int = 0 //定义一个属性,重写get方法 g

2021-03-06 17:07:38 639

原创 Kotlin之类委托和属性委托

这一篇文章,让我们来谈谈关于Kotlin委托相关的知识。Kotlin中的委托可以分为类委托以及属性委托。委托,顾名思义就是把原本需要我们实现的功能,通过委托的方式交给另一个类帮我们实现。就像工作中一样,你的同事想要喝奶茶,然后他毫不客气地让你帮他买,这样子他就把买奶茶这件事委托给了我,我来帮他完成买奶茶这件事。在Kotlin中,我们通过关键字by来实现委托。接下来让我们先看看类的委托。一、类委托类的委托即一个类中定义的方法实际是调用另一个类的方法来实现的。无论什么时候实现一个接口,你都可以使用by关

2021-03-04 00:37:47 465

原创 Kotlin类的构造方法

Kotlin的类构造方法分为:主构造方法和从构造方法。主构造方法通常是主要而简洁的初始化类的方法,并且在类体外部声明。从构造方法在类体内部声明。主构造方法class User(val nickName:String)在上面代码中,括号围起来的语句块叫作主构造方法。它主要有两个目的:表明构造方法的参数,以及定义使用这些参数初始化的属性。初始化语句块初始化语句块由关键字init{}来表示。这种语句块包含了**在类被创建时执行的代码,并会与主构造方法一起使用。**因为主构造方法有语法限制,不能包含初始

2021-01-11 23:58:49 1008

原创 Kotlin密封类:sealed

密封类:用来定义受限的类继承结构。在when表达式中处理所有可能的子类,我们必须提供一个else分支来处理没有任何其他分支能匹配的情况:interface Exprclass Num(val value:Int):Exprclass Sum(val left:Expr,val right:Expr):Exprfun eval(e:Expr):Int = when(e){ is Num -> e.value is Sum -&g

2021-01-11 22:52:09 529

原创 Kotlin学习之内部类和嵌套类:默认是嵌套类

像Java一样,在Kotlin中可以在另一个类中声明一个类。这样做在封装一个辅助类或者把一些代码放到靠近它被使用的地方时非常有用。区别是Kotlin的嵌套类不能访问外部类的实例。我们来定义一个View元素,它的状态是可以序列化的。想要序列化一个视图可能并不容易,但是可以把所有需要的数据复制到另一个辅助类中去。我们声明State接口去实现Serializable。View接口声明了可以用来保存视图状态的getCurrentState和restoreState方法。interface State:Seria

2021-01-10 23:28:33 285

原创 Kotlin学习之可见性修饰符:默认为public

可见性修饰符帮助控制对代码库中声明的访问。通过限制类中实现细节的可见性,可以确保在修改它们时避免破坏依赖这个类的代码的风险。Kotlin与Java可见性修饰符的不同Kotlin中的可见性修饰符与Java中的类似。同样可以使用public、protected和private修饰符。但是默认的可见性不一样:如果省略了修饰符,声明就是public的。Java中的默认可见性——包私有,在Kotlin中并没有使用。Kotlin只把包作为在命名空间里组织代码的一种方式使用,并没有将其用作可见性控制。作为代替方案

2021-01-10 22:57:11 1714

原创 Kotlin学习之修饰符:默认为final

在Java中,Java允许你创建任意类的子类并重写任意方法,除非显示地使用了final关键字进行标注。这通常很方便,但是也造成了一些问题。对基类进行修改会导致子类不正确的行为,这就是所谓的脆弱的基类问题。因为基类代码的修改不再符合在其子类中的假设。如果类没有提供子类应该怎么实现的明确规则(哪些方法需要被重写及如何重写),当事人可能会有按基类作者预期之外的方式来重写方法的风险。因为不可能分析所有的子类,这种情况下基类是如此“脆弱”,任何修改都有可能导致子类出现预期之外的行为改变。为了防止这种问题,建议“要

2021-01-09 18:27:15 1437

原创 Kotlin学习之Kotlin中的接口

Kotlin中的接口Kotlin的类和接口与Java的类和接口还是有一点区别的。例如:接口可以包含属性声明。与Java不同,Kotlin的声明默认是final和public的。此外,嵌套的类默认并不是内部类:它们并没有包含对其外部类的隐式引用。Kotlin的接口与Java 8中的相似:它们可以包含抽象方法的定义以及非抽象方法的实现(与Java 8中的默认方法类似),但它们不能包含任何状态。使用interface关键字来声明一个Kotlin的接口。interface Clickable{ fu

2021-01-09 15:54:05 515

原创 Kotlin智能转换

在Java中,我们需要用到instanceof关键字来判断一个对象是否是某种类型,在使用instanceof关键字判断之后,我们还需要显式地加上类型转换。而在Kotlin中,我们使用is检查来判断一个对象是否是某种类型。不同的是,在Kotlin中,编译器已经帮我们执行了类型转换,我们不用手动添加类型转换,我们把这种行为称为智能转换。接下来,我们用一个简单的例子来加深对智能转换的理解。我们来编写一个函数对像**(1+2)+4这样简单的算术表达式求值。你会采用怎样的形式编码这种表达式?我们可以把它们存储在一个

2020-12-27 17:32:42 301

原创 轻松掌握Kotlin的基本要素

在上一篇文章中,我们初步了解了什么是Kotlin,重点关注其与Java的互操作性,了解了Kotlin的主要特征以及在Android Studio中如何将Java代码转换为Kotlin代码。如果您还没有阅读,可以先阅读后再进行下一步学习。本文主要介绍Kotlin的基本要素:变量、函数和类以及属性首先我们先来学习函数和变量。1、基本要素:函数和变量现在,我们就从最最最经典的例子开始:打印一个“Hello world!”。代码如下:@Testfun main(args:Array<String&gt

2020-12-22 23:26:44 147

原创 带你简单认识Kotlin

Kotlin到底是什么?Kotlin是一种针对Java平台的新编程语言。Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务器端开发、Android应用等。Kotlin可以很好地和所有现存的Java库和框架一起工作,而且性能水平和Java旗鼓相当。与Java的互操作性是kotlin的基石之一,互操作性对于在一个已有的Java代码库中逐步地引入Kotlin非常重要。据了解,有两个新的目标平台正在开发:Kotlin现在可以在JavaScript虚拟

2020-12-20 23:46:35 832

原创 Android学习之理解Window和WindowManager

前言Window表示一个窗口的概念,我们在日常开发中直接接触Window的机会并不多,但是在某些特殊时候我们需要在桌面上显示一个类似悬浮窗的东西,那么这种效果就需要用到Window来实现。简单来说就是在桌面显示我们想要的东西,就需要用到Window来实现。1、Window、WindowManager和WindowManagerService三者简单的关系Window是一个抽象类,它...

2018-09-16 19:28:50 267

原创 透明度百分比与16进制透明度的对应关系

在网上查到了一个对应的表,就直接拿来用了,以备不时之需。 同时在这里为大家推荐一个快速获取颜色的工具——屏幕拾色器。直接再百度输入即可看到。 100% — FF 99% — FC 98% — FA 97% — F7 96% — F5 95% — F2 94% — F0 93% — ED 92% — EB 91% — E8 90% — E6 89% —...

2018-08-30 11:43:46 1153

原创 Android学习之ComponentName的使用

一、ComponentName简介ComponentName,顾名思义,就是组件名称,这个类主要用来定义一个应用程序的组件,通过调用Intent中的setComponent方法,我们可以打开同个应用以及不同应用中的组件。例如:Activity,Service。二、ComponentName的使用简单介绍完ComponentName,接下来来看看如何使用它。由于ComponentName...

2018-08-13 00:57:36 8179

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除