刘正的技术博客

胆小认生,不易相处

擅长Android技能,深入研究移动端开发,此为博客一枚。


  1. 个人信息

    Android开发工程师姓名 刘正 电话: 188 1751 1354 邮箱: zheng.liumoment@gmail.com GitHub: https://github.com/momentslz 个人主页:http://liuzheng.space/ 项目经验麦萌漫画 简介:二次元漫画、小说、图片社区预览:下载链接 相关技术细节模块化改造 在项目原有路由activityrouter基础上进行模块化改造,实现模块间解耦操作,模块中对外提供的接口在通用模块中注册,供其他模块调 …

    于 继续阅读

  2. Android窗口管理框架源码解析整理

    原文地址 Android open source project analysis 感谢原作者guoxiaoxing及相关技术大佬的无私付出. 此篇文章在各位大佬的源码分析文章的基础上对自己的理解进行整理,各位可结合原文分析使用,如有不实之处欢迎指正. Android窗口管理框架 [x] Android显示框架:Android应用视图的载体View measure流程 ViewGroup在onMeasure()中会调用所有子View的measure让它们进行自我测量并在onMeasu …

    于 继续阅读

  3. Android SD卡下载路径切换

    存储机制原理及初始化Android存储机制 原文链接: Android | 图解外部存储和内部存储 内外部存储的区别 按照内外部存储:带External字眼则一定是外部存储的方法,如 getExternalFilesDir() ,外 部存储需要运行时权限; 按照公有私有性质:公有文件是Environment调用函数,而私有文件(包括内部私有与外部私有)是Context调用函数,公有文件不会随着app卸载而删除而私有则会,私有文件不会被Media Scanner扫描到。 需求描述 …

    于 继续阅读

  4. Android图片加载-Glide4.0框架封装

    基于现有项目存在大量高清美图展示的模块,所以在使用并对比了Glide和fresco的加载效果及使用体验后定下来的,两个框架都非常优秀但其侧重点略有不同之所以会选择Glide是因为本人挺喜欢Glide的API风格,简单方便而且不会涉及到自定义view. Glide地址:https://bumptech.github.io/glide/ 本次侧重点会放在对应用的内存管理上来,当然对于图片的处理也是内存管理相当重要的一部分. 先上效果图 使用步骤Glide添加1234567compile(&apos …

    于 继续阅读

  5. 仿开眼视频Android客户端

    仿开眼视频Android客户端,本项目主要用来练手Google-MVP已及kotlin,对于急切想熟悉kotlin的童鞋来说是一个不错的练手项目,由于公司任务比较紧急所以本项目目前处于功能完善中,相关技术文章还未整理发布,想参与本项目开发的童鞋可以先自己去熟悉项目并在issues留言,或在目前的基础上进行修改,后续会陆续相关文章会发布到个人主页,欢迎各位积极PR,相关文章发布地址如下: 简书掘金blog源码地址 截图说明 项目功能简介 数据来源 开眼视频官网 本项目功能参考的是开眼视频Ver …

    于 继续阅读

  6. 自定义TabLayout

    本文为kotlin仿开眼视频Android客户端的后续补充内容,本篇为大家介绍如何对TabLayout进行定制使用,基于项目需求,本篇主要对部分功能进行了定制,如:指示器距离文字的距离、文字选中加粗、文字选中变大等 本文部分代码参考:FlycoTabLayout 效果图 效果-1 效果-2 参数详解属性源码 123456789101112131415<declare-styleable name="MyTabLayout"> <att …

    于 继续阅读

  7. MVP模式解析

    前言: MVP模式是从MVVM 模式转化而来,MVVM是Model-View-ViewModel的简写,而MVP则是Model-View-Presenter 模式,其中Model负责 下面列举两种的差别: 1、MVC MVC 模式是model view 和 controller 三者之间可以互相通信,但是这样就存在一个问题,就是view层可以调用model层和controller层的代码,所以会导致逻辑混乱。 2、MVPMVP 是Model view 和 Presenter …

    于 继续阅读

  8. 使用IntentService进行apk更新

    通常在使用service更新应用时最常出现的问题就是Notification进度的更新问题、service在什么时间关闭以及需要我们自己在Service中创建新的线程处理耗时操作,当然这种也是可以实现的但是会显得略微繁琐经过对比发现可以使用IntentService已经实现了对耗时操作的包装出来,我们只需要实现IntentService中的onHandleIntent方法就可以在其中进行耗时操作的处理,在处理下载问题时发现在使用intentservice时暂时没有发现可以优雅的进行进度回调的实现 …

    于  BroadcastReceiver IntentService 继续阅读

  9. 日志记录框架

    日志记录框架版本 v1.0.0已完成:业务日志、通用日志、错误日志可以正常使用待完善:Action日志当前页面功能、本地存储的上传规则 框架功能简介 使用在需要使用的module的gradle中添加:1compile 'com.moment:logconverge:1.0.3-2' 日志框架入口初始化(在Application的onCreate方法中初始化):在Application中添加代理:12345678910111213141516171819202122232425 …

    于  BroadcastReceiver IntentService 继续阅读

  10. Handler、AsyncTask、HandlerThread和IntentService之间的对比

    耗时操作的几种操作方式Thread Handler Looper MessageQueue创建handler时会创建looer对象并用looper中的messageQueue对象初始化当前messageQueue当使用handler发送消息时会有两种方式发送:sendMessage和dispatchMessage前者发送的消息会直接发送至messageQueue中通过looper对象循环处理并将结果转发至handler的handleMessage方法中经过了线程之间的切换后者则通过判断是否存在R …

    于  handler LopperThread AsyncTask IntentService 继续阅读