5 黄林晴

尚未进行身份认证

我要认证

胸有惊雷 面若平湖

等级
TA的排名 5k+

Kotlin 使用DSL构建语法结构 看这一篇就够了~

前言DSL并不是单独为Kotlin语言提供的,可能你并知道DSL是什么,但是我敢说,只要你是Android开发者,你就一定使用过并且一直在使用DSL,那么到底什么时DSL?使用DSL又可以实现怎么样的功能呢?DSL是什么DSL的全程是Domain Specific Language 即 领域特定语言,我们可以通过DSL语言 构建出属于我们自己的语法结构,而在Kotlin中并不只有一种方式实现DSL,而主要的实现方式就是高阶函数(如果你不了解高阶函数,也不用怕,后面我会单独一篇文章来介绍高阶函

2020-09-11 11:16:47

代理模式看这一篇就够了~

前言不知各位是否还记得这两篇文章APP启动流程解析和Android Hook告诉你 如何启动未注册的Activity,这两篇文章中使用的技术基础都包含了 代理模式,其中在文章中也说道 “说到代理其实就是代理模式,关于什么是代理模式以及动态代理和静态代理的使用可以持续关注我,后面会单独写篇文章进行介绍。”如今整整一年过去了,我还是曾经那个少年,没有一丝丝改变。 这篇文章来了~什么是代理模式说到设计模式,离我们特别远,又特别近。问许多工程师,设计模式用过哪些,相信很多人都...

2020-08-07 22:16:58

Kotlin 协程 看这一篇就够了

前言Kotlin协程是什么,如何使用?如何结合Retrofit使用?Kotlin 的优势在哪里?相信看完这一篇你一定有所收获!协程基本使用若使用协程,首先我们得引入协程相关的开发包implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.7-mpp-dev-11'implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.7-mpp-de

2020-07-08 21:26:54

我的MVVM 开源小项目已发布~

前言前几篇文章中,我们学习了许多Jetpack架构组件,虽说每个架构组件都是相互协调使用的,但是相信还是有很多人不知道如何搭建一个Jetpack的项目,不知道网络请求该放在什么地方,或者说其他的开源项目功能比较多导致学习也无从下手。那么这个开源小项目MvvmNews一定能帮助到你!项目简介本项目,使用了MVVM架构、JetPack组件 实现唯一功能即 通过网络请求获取新闻数据,点击item进入新闻详情页面,功能特别简单,但是 是学习MVVM的最佳方式。项目使用聚合数据API 来获取新闻数据,采用

2020-05-26 21:08:18

Android JetPack系列文章 ,持续更新中

前言Jetpack是一套库、工具和指南,可帮助开发者更轻松地编写优质应用,接下来一个月 我将持续更新JetPack组件系列文章为此我自己做了一个简易的系列目标,欢迎共同打卡奋战!1、Android Jetpack系列之ViewBinding和DataBinding持续更新中~...

2020-05-19 15:28:08

Android Jetpack系列 之LiveData

前言在Android Jetpack 之ViewBinding和DataBinding这篇文章中,我们讲到了可观察的数据对象,在Jetpack组件中也为我们提供了强大的可观察的数据存储器类,就是我们本篇所说的LiveData。LiveData与普通可观察类不同的是LiveData具有生命周期感应能力,比如我们在页面中进行网络请求结束后,需要将数据显示在UI上,如果此时页面被销毁就会有空指针等异常,我们还需要在页面销毁的时候单独处理,而使用了LiveData之后就不需要我们手动的去处理这些了,.

2020-05-22 16:18:08

Android Jetpack系列之 ViewModel

前言前面两篇文章我们已经学习了Lifecycle和DataBind,本片文章我们来学习Jetpack系列中比较重要的ViewModel,Jetpack的很多很多组件都是搭配使用的,所以单独的知识点可能会有些”无意义“但却是我们项目实战的基础!...

2020-05-21 19:32:02

Android Jetpack系列之Lifecycle

前言Lifecycles是Jetpack架构组件中用来感知生命周期的组件,使用Lifecycles可以帮助我们写出和生命周期相关更简洁更易维护的代码。生命周期生命周期这个简单而又重要的知识相信大家早已耳熟能详。假设我们现在有这样一个简单需求:这个需求只是一个实例,在真实的开发中当然不可能有这样的需要:在Activity 可见的时候,我们去做一个计数功能,每隔一秒 将计数加1 ,当Activity不可见的时候停止计数,当Activity被销毁的时候 将计数置为0OK,So easy~

2020-05-20 16:17:53

Android Jetpack 之ViewBinding和DataBinding

前言Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。现在无论走到哪儿,如果Android开发者说自己不了解Jetpack,怕是会被人”鄙视“的看一眼,从今天开始,我会写一系列Jetpack的文章,让我们一起来学习强大的Jetpack吧。ViewBinding通过视图绑定,系统会为模块中的每个 XML 布局文件生成一个绑定类,通过绑定类,我们可以直接操作控件id,而不需要findViewById,这样我们可以避免控件id无效出现的空指针问题。首先我们新建项目,新建M

2020-05-20 09:07:08

Android中 使用 WebSocket 实现消息通信

前言消息推送功能可以说移动APP不可缺少的功能之一,一般简单的推送我们可以使用第三方推送的SDK,比如极光推送、信鸽推送等,但是对于消息聊天这种及时性有要求的或者三方推送不满足业务需求的,我们就需要使用WebSocket实现消息推送功能。基本流程WebSocket是什么,这里就不做介绍了,我们这里使用的开源框架是https://github.com/TakahikoKawasaki/n...

2020-04-06 09:46:16

自定义View二篇,如何自定义一个规范的ViewGroup

前言在自定义View开篇,必须跨过的一道坎儿中,我们介绍了自定义View的几种方式,以及如何实现一个规范的自定义View,上文中也说了,实现一个规范的自定义ViewGroup是一件比较困难的事情,因为要考虑的情况包含 本身的padding以及子view的margin 与 本身wrap_content 问题。如何实现一个规范的ViewGroup,以实现垂直布局的LinerLayout为...

2020-02-07 13:50:23

自定义View开篇,必须跨过的一道坎儿

前言对于许多Android开发者而言,无论工作的方向是什么,自定义View是不得不跨过去的一道坎儿,相信很多伙伴有这样的感受,关于自定义View的知识都看的明白,甚至滚瓜烂熟,但是遇到自定义View实战的时候,还是感觉无从下手,其实想学好自定义View,只有一个字,'练",从今天开始我会持续开始写自定义View系列的文章,一方面巩固自己的基础,另一方面温故而知新。自定义view的方式及异同...

2020-02-06 16:20:06

字符串匹配算法从indexOf函数讲起

前言相信每个学习过Java的人都使用过indexOf函数,indexOf函数我们可以查找一个字符串(模式串)是否在另一个字符串(主串)出现过,返回结果表示出现位置的下标,如果返回-1,表示模式串在主串中不存在,那么,你可曾想过这些查找函数又是如何实现的呢?从indexOf源码看起首先我们先来看一下indexOf的源码,indexOf的使用方式比较多,这是我们以一个形参的为例。...

2019-12-24 09:50:53

2019年总结,平凡的我仍在平凡的生活

时光荏苒,2019年即将结束,平凡的一年,平凡的我仍在平凡的生活。清晰的记得,18年年初给自己制定的几个flag:1.运营好公众号,用户数量翻倍2.经常写博客3.发布自己的开源库4.扎实技术功底,厚积薄发5.听说flag立多了,自己都会想笑如今翻出来,果不其然,我中了第5点,现在我真的在笑。感觉今年绝大多数的时间都放在工作上了,每天都会有做不完的事情,对于自己的规划...

2019-12-21 15:21:42

Android Gradle 多渠道打包

前言什么是多渠道打包以及多渠道打包可以做什么,这里就不做介绍了,相信看到这篇文章的你已经了解了,多渠道打包的方式比较多,这里我们用Gradle多渠道打包方式。和其他文章有什么不同网上看到的大多数文章都只讲解了1.如何修改包名2.如何修改变量的值3.如何替换string中的资源4.如何替换AndroidManifest中的资源本篇文章会在上述知识点上增加5.不同...

2019-10-21 17:16:06

Android 贝塞尔曲线实现水纹波动效果

前言最近工作上比较忙碌,很久没有更新文章了,难得国庆小长假,现在是2019年10月2日凌晨00:49,写一篇简单且实用的贝塞尔曲线应用,许多技术点的文章很多前辈都已经写的很好了,所以 如有纰漏之处,欢迎留言指正,同时也欢迎各位留言需要的技术点类型,争取奉献更优质的技术文章。贝塞尔曲线简介千篇一律,很多类似的文章都会介绍一下什么是贝塞尔曲线,但是我这里就不做介绍了,原因有二,其一 正如上...

2019-10-02 00:51:50

Android自定义View之绘制圆形头像

前言做APP应用开发的时候,用户头像肯定是必不可少的,但是90%以上的需求头像都是圆形的。那么,如何通过自定义View的方式实现圆形头像呢,那么,本片博文会告诉你不仅仅是实现过程。一定会有意想不到的收获哦!最终效果国际惯例,我们先来看最终实现的效果图自定义RoundImageView继承自ImageViewpublic class RoundImageView ext...

2019-09-13 23:18:33

消息通知Notificatio在8.0上不显示,适配Android8.0

public class NotificationUtil { private Context aContext; private NotificationManager notificationManager; private static class NotificationHolder { private static final Notific...

2019-08-30 08:46:37

Android 悬浮窗功能的实现

前言我们大多数在两种情况下可以看到悬浮窗,一个是视频通话时的悬浮窗,另一个是360卫士的悬浮球,实现此功能的方式比较多,这里以视频通话悬浮窗中的需求为例。编码实现使用Kotlin。Java版本留言邮箱即可。业务场景以微信视频通话为例,在视频通话时,我们打开其他应用或点击Home键退出时或点击缩放图标,悬浮窗会显示在其他应用之上,给人的假象是通话页面变小了,点击悬浮窗回到通过页面,悬浮窗...

2019-08-29 17:15:33

深入理解Android消息机制

前言 Android的消息机制主要说的是Handler的运行机制,相信大家对Handler已经非常熟悉了,Handler可以轻松的将一个任务切换到Handler所在的线程中去执行。最熟悉的就是我们只能在UI线程中更新UI,所以我们经常来用Handler来更新UI,但Handler并不是专门用来更新UI的。本文源码基于Android8.0。一、为什么只能在主线程中访问UI 可...

2019-08-06 09:04:40

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 精彩红人
    精彩红人
    发布高质量Blink获得高赞和评论,进入精彩栏目即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 分享精英
    分享精英
    成功上传11个资源即可获取