自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 gitlab CI 问题总结

kotlin.KotlinNullPointerException (no error message)原因:获取不到android sdk 路径https://www.geek-share.com/detail/2800054946.html解决方案:sudo vim /etc/profile(sudo 是因为该文件需要root权限才能编辑)添加export ANDROID_HOME=/home/mi/Android/Sdkexport PATH=$PATH:${ANDROID_HO.

2021-08-10 11:59:22 239

原创 Retrofit+Kotlin Coroutine重构Android网络框架

前言Kotlin的Coroutine 可以使异步编程的代码更优雅,可以去除传统的异步编程中的Callback,使得代码看起来就是它想表达的直观的逻辑。使用异步编程最多的地方就是网络请求,所以如果能将Coroutine与Retrofit结合起来,去除Retrofit中的Callback。那么我们的网络请求的代码将会变的非常的易读。Kotlin Coroutine 简介Kotlin coroutines let you convert callback-based code to sequential

2020-12-18 21:15:48 2350 18

原创 组件化架构之解决Common组件中心化问题(api化方案)

1. Common组件中心化问题一般的组件化架构的结构是这样的:随着业务的不断增加,我们都会遇到一个问题,就是common组件越来越大,里面的代码越来越乱,该组件就会变得比较臃肿,难以维护。分析问题问题的出现都是有原因的,我们来分析一下common组件里都放了什么内容:整个项目的一些base的代码比如BaseActivity,BaseFragment等一些base代码。分析:这种base代码放在common里确实是比较合适的。两个组件间共用的代码比如数据类和网络接口类。A

2020-12-03 16:48:16 1692

原创 组件化架构之组件初始化 Component Initializer(组件初始化器)开源项目 原理分析

Component Initializer(组件初始化器)开源项目 介绍Component Initializer(组件初始化器)介绍原理分析问题1:该框架是如何实现Component类的自动注册的刚开始我想到的方案是通过注解来实现。首先用@Component注解标记Component类,然后我们用注解处理器就可以拿到Component类的信息,然后利用注解处理器自动生成ComponentInitializer.java类,将收集到的Component类的初始化代码new Component

2020-11-27 17:16:21 1155 5

原创 组件化架构之组件初始化 Component Initializer(组件初始化器)开源项目 介绍

Component Initializer (组件初始化器)介绍在Android组件化架构中用于各个组件在Application启动时进行初始化操作的框架组件初始化的各个方案对比组件初始化的各个方案对比为什么要使用Component Initializer1. 使用注解来标记Component类@Componentpublic class Component implements IComponent { @Override public void init(Context c

2020-11-27 11:40:10 1962

原创 使用IntelliJ IDEA自动生成成员对象的代理方法

在《Thinking in Java 4th》7.3 代理 中 作者提到可以使用IntelliJ IDEA自动生成成员对象代理方法的代码。找了半天才找到怎么操作。例子:package aaa;public class A { private B b;}class B { public void b1() { } public void b2

2015-11-25 11:05:12 8320 4

原创 仿QQ圆头像裁剪开源项目——ClipCircleHeadLikeQQ

1.项目背景:很多项目中用到的头像都是圆头像,圆头像使界面看起来更具有美感,比如QQ在整个应用中使用的就是圆头像。基本上每个应用都有上传头像的功能,在上传头像的时候需要对图片裁剪。虽然截取出来的图片实际上都是方图,但是在裁剪的时候如果能直观的让用户看到裁剪以后的圆头像的效果,体验就更好了。一像注重用户体验的QQ就是这么实现的,如图我们项目中用到的也是圆头像。截取头像功能的需求就是做

2015-10-18 22:13:56 6632 6

原创 Handler机制到底帮我们解决了什么问题

关于Handler机制,网上的文章很多,这里主要谈一下我的理解。我对一项技术的理解,一般都会思考一个问题,就是这项技术到底帮我们解决了一个什么问题?思考这个问题的好处是,你能很好的理解这项技术的使用场景,也就是你知道在遇到什么样的问题的时候可以用这项技术去帮我们解决,毕竟技术就是为了帮我们解决某个问题而存在的。那么 Handler机制到底帮我们解决了一个什么问题?在一个线程中可以通

2015-08-19 14:01:26 869

转载 Android中DrawBitmapMesh用法小记

这个东西的究极原理就是按照网格来重新拉伸你的图像,而不是像网上说的“重新定义每一个像素”那么复杂。下面以图说明。假想在一张图片上有很多网格,如下图。 在这张图上,每个网格上的像素与图片上的像素是一一对应的,也就是网格怎么扭动,图像就会怎么动。比如把网格扭成下面这样,图像就跟着扭曲了。

2012-04-12 13:25:29 1119

原创 使用Canvas、Bitmap时易犯的内存泄露问题

该篇文章解决了困扰了我几天的一个问题,特转载过来,希望能够帮助到更多的人,在原文的基础上略有修改。原文地址:http://www.bangchui.org/read.php?tid=10013你是不是在使用Bitmap的时候遇到了OOM异常?你是不是觉得我对bitmap进行了recycle发现效果不是很明显,内存仍然是一路飙升?好吧,那你就来对地方了! 对于下面的代码p

2012-04-11 17:26:21 8683 3

空空如也

空空如也

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

TA关注的人

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