最近已经开始全面转投kotlin,不得不说使用kotlin开发项目真的是非常舒服,编写代码过程中真的有一种所想即所得的感觉,不会再让一些无聊的东西打断你的思路,回归正题,这边介绍一下kotlin中的一个小技巧。

在我们平常开发过程中肯定会使用到各种progressDialog,最常见的比如请求网络数据时在没有返回数据前会显示一个加载中的状态,大多数时候我们会封装一个CustomProgressdialog,当调用的时候初始化它,并通过show方法进行显示,通常我们会把这个CustomProgressdialog放在BaseActivity中,方便各个界面进行调用,下面来看kotlin中是如何完成这些操作的。

首先需要一个CustomProgressdialog,先完成一个这种样式的CustomProgressdialog

由于这片文章的重点不在于如何实现这个CustomProgressdialog,封装的具体过程就不说了,如果需要文末有github地址。

现在我们已经有了一个CustomProgressdialog,接下来自定义一个接口LoadingDialogManager

interface LoadingDialogManager {val loadingDialog: LoadingDialogfun showLoadingDialog(context: Context) {loadingDialog.showDialog(context, "加载中", true, null)}fun hideLaodingDialog() {loadingDialog.dismiss()}
}复制代码

在这个接口中有两个方法showLoadingDialog和hideLaodingDialog,分别对应dialog的show和dismiss。注意这里并没有对LoadingDialog进行实例化
下面让我们的BaseActivity实现这个接口,由于我们的接口中有一个loadingDialog成员,所有还需要实现它

open class BaseActivity : AppCompatActivity(), LoadingDialogManager {override val loadingDialog by lazy { LoadingDialog(this) }
}复制代码

这里使用到了委托延迟属性的概念,简单来说只有当loadingDialog 真正被使用的时候采实例化它。这样就减轻了activity初始化的压力。

在具体的activity中直接调用showLoadingDialog和hideLaodingDialog即可完成LoadingDialog的显示和隐藏了。

class MainActivity : BaseActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)showLoadingDialog(this)}
}复制代码

有没有感觉这样一封装代码变得简洁不少?其实这只是一种思路,其他的一些公用组件也可以通过这种方式进行封装,最后奉上githu地址
github.com/shiweibsw/K…

题外话:最近正在利用业余时间完全使用kotlin高仿一版B站客户端,目前正在开发过程中,欢迎有兴趣的小伙伴加入,github地址:github.com/shiweibsw/i…

Kolin 更优雅的封装ProgressDialog相关推荐

  1. 如何更优雅地对接第三方API

    如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/ ...

  2. 9条消除if...else的锦囊妙计,助你写出更优雅的代码

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! 前言 最近在做代码重构,发现了很多代码的烂味道.其他的不多说 ...

  3. 教你如何更优雅的设计Java异常

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:lrwinx https://lrwinx.github.i ...

  4. Python代码如何写的更优雅

    首先最重要的一点, 忘掉其他语言里的写法, 尝试使用Python风格进行code, 熟练之后,你会觉得她真的很美! 1. 多个值进行初始化 # > yes s1,s2,s3 = [],[],0 ...

  5. 更效率、更优雅 | 阿里巴巴开发者工具不完全盘点

    简介: 阿里巴巴将自身在各类业务场景下的技术积淀,通过开源.云上实现或工具等形式对外开放,本文将精选了一些阿里巴巴的开发者工具,希望能帮助开发者们提高开发效率.更优雅的写代码. 从人工到自动化,从重复 ...

  6. 转: Springboot — 用更优雅的方式发HTTP请求(RestTemplate详解)

    转自: Springboot - 用更优雅的方式发HTTP请求(RestTemplate详解) - Java知音号 - 博客园RestTemplate是Spring提供的用于访问Rest服务的客户端, ...

  7. 优雅的封装ajax,含跨域

    之前写过一篇 先定一个小目标,自己封装个ajax,是基于原生js的,也就是jquery中ajax的简化版本实现的思路.众所周知,jquery的ajax是项目中最常用的请求后台的方式,也算是封装的很完美 ...

  8. 如何写出更优雅的代码——编程范式简述

    <如何写出更优雅的代码--编程范式简述>源站链接,阅读体检更佳! 什么是程序? 1976年,瑞士计算机科学家,Algol W,Modula,Oberon 和 Pascal 语言的设计师 N ...

  9. Effective java 系列之更优雅的关闭资源-try-with-resources

    背景: 在Java编程过程中,如果打开了外部资源(文件.数据库连接.网络连接等),我们必须在这些外部资源使用完毕后,手动关闭它们.因为外部资源不由JVM管理,无法享用JVM的垃圾回收机制,如果我们不在 ...

最新文章

  1. 度学习实践:如何使用Tensorflow实现快速风格迁移?
  2. wsl遇到问题The repository ‘http://ppa.launchpad.net/ubuntu-desktop/ubuntu-make/ubuntu focal Release‘解决方法
  3. java websocket 客户端
  4. OCS 2007 R2将前端加入到企业版池
  5. margin: 0 auto没有水平居中怎么回事
  6. 【editor】Source Insight定制之代码风格自动校准功能(AStyle的使用)
  7. 虚拟化实验室推进计算机网络专业实践教学的解决方案(论文体)
  8. delphi 获取java控件位置_delphi的IdFTP控件函数怎么调用
  9. 实战_06_SpringBoot整合redis-cluster集群版本
  10. 为Get/Post课程收集资料
  11. windows系统bat批处理 开机一键多个程序
  12. mysql优化--explain分析sql语句执行效率
  13. nginx详解反向代理,负载均衡,LNMP架构上线动态网站
  14. Delphi 操作Excel方法大全
  15. 超详细的Java基础面试题总结
  16. 常用手机屏幕尺寸大小
  17. 智能性与实用性兼具,华为开启智能眼镜全民时代
  18. 题8 数据库系统的核心是什么?
  19. 等了3个月终于来啦!传智播客C/C++视频教程开始更新喽~
  20. 送给计算机老师的话,毕业送给老师的话短句

热门文章

  1. I2C总线设计规范之基础篇
  2. linux内存管理e820map
  3. 程序员怎么才能又轻松又赚钱?
  4. php 大文件下载,php超大文件下载及断点续传下载的实现代码
  5. 中国科学技术大学计算机研究生调剂,2019年中国科学技术大学计算机科学与技术学院软件工程专业学位(非全日制)研究生校内调剂简章...
  6. 微信小程序的优势和特点
  7. vue, H5 浏览器 播放器video 嵌入APP(andriod,IOS) 首次有声音自动播放 处理
  8. flutter底层原理和embedder的隐忧
  9. dns服务器架构实验
  10. Finite Difference Frequency Domain(FDFD) 算法和C++实现