自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从OkHttp原理看网络请求

networkInterceptor前面已经存在有多个拦截器的使用,在请求到达该拦截器时,请求信息已经相当复杂了,其中就包括RetryAndFollowUpInterceptor重试拦截器,经过分析知道,每当重试一次,其后面的拦截器也都会被调用一次,这样就导致networkInterceptor也会被调用多次,而第一个自定义拦截器只会调用一次。从源码上看,如果代理类型为直连或者HTTP/FTP代理,则直接创建一个socket,反之,则指定代理类型进行创建。同时,会判断当前请求是否会出错以及是否需要重定向。

2022-09-03 19:59:54 367 1

原创 Flutter实战项目开源

这个项目还是以玩AndroidAPI为基础数据进行构建,目前完成首页、项目分类、文章体系筛选、个人中心、登录、注册、收藏页等功能。Flutter版项目地址:fuusy/flutter_read另外,Jetpack版请转地址 fuusy/component-jetpack-mvvm项目预览使用浏览器扫描二维码可下载【轻阅】体验。预览图首页登录文章体系个人中心项目分类列表功能点空安全:基于2.0进行空安全适

2021-12-21 14:52:41 1110

原创 Compose版来啦!仿自如裸眼3D效果

前段时间自如团队实现了App裸眼3D效果,确实让人眼前一亮,昨天Nayuta 大佬使用Flutter也实现了该功能,那Jetpack compose版本怎么能落下。前人栽树后人乘凉,首先在这里感谢自如大前端团队 和Nayuta ,下文所用的素材也有一部分来自Nayuta ,再次感谢。思路从自如团队所提供的思路来看,裸眼3D效果是将整个图片结构分为3层:上层、中层、以及底层。在手机左右上下旋转时,上层和底层的图片呈相反的方向进行移动,中层则不动,在视觉上给人一种3D的效果。至于使用Jetpack C

2021-09-12 20:18:09 405 2

原创 仿微信聊天炸“屎”效果!!诶,就是玩!

Long Long Ago,微信8.0更新了一个“炸屎”的新功能,还蛮有新意。这两天和朋友聊天触发了这个功能,当时心想,诶!这文章素材不就来了吗?!趁着周末时间,赶紧来实现一下。我们先来看看整体实现的效果:本篇文章无技术含量,纯属娱乐,纯属娱乐思路经过不断试验,反复查看了微信炸????的效果,基本上可以将其拆解成几个小部分。选择炸弹表情,发送后炸弹会以抛物线的形式向对方发送,同时????会进行翻转;在????碰到????表情的时候,出现爆炸动画;在动画爆炸的同时,出现大概7个????表情

2021-09-12 20:16:34 288

原创 「性能优化系列」APP启动优化理论与实践(下)

性能优化系列: 启动优化 内存优化 布局优化 卡顿优化 apk瘦身优化 电量优化项目地址: fuusy/FuPerformance零、前言一年多以前写过一篇关于启动优化的文章,见「性能优化系列」APP启动优化理论与实践(上)。每一年都有新的见解,本篇将在前篇的基础上补充说明app的启动优化方案,请结合查看。本篇内容主要如下:启动耗时监测实战:手动打点以及AspectJ方式对比;启动优化实战:有向无环图启动器、IdleHandler启动器以及其他黑科技方案;优化工具.

2021-09-12 20:13:21 422

原创 「性能优化系列」APP启动优化理论与实践(上)

应用启动的时间作为应用的门面,重要性可想而知。尤其在如今的快时代,一款秒开的App比一款启动需要耗费好几秒的App更容易被用户喜爱和长期使用,整的不好还容易被用户永久拉入黑名单。这时候,应用的启动优化就必不可少了。那么接下来就来了解下关于启动优化的一些注意事项。一、应用启动类型1.1.冷启动冷启动是指应用程序从零开始,系统的进程在此启动之前没有创建应用程序的进程,或者由于系统杀死了应用后再启动。在冷启动开始时,系统有三个任务。这些任务包括:加载并启动应用程序。启动后立即显示一个空白的启动窗

2021-09-12 20:12:20 225

原创 「性能优化系列」APP内存优化理论与实践

性能优化系列: 启动优化 内存优化 布局优化 卡顿优化 apk瘦身优化 电量优化项目地址: fuusy/FuPerformance当一个应用同时运行越来越多的任务以及复杂的业务,Android系统的内存管理机制已经无法满足内存的释放与回收,为了应用的稳定性与性能,去控制内存的创建和回收就成为了一个重要的命题。本篇文章主要涉及内容如下:对象的创建与回收;分配内存的方式,对象在JVM中的生命周期;判断对象是否需要被回收,垃圾回收算法;内存抖动、内存泄漏的监控;Bit.

2021-09-12 20:11:01 361

原创 「性能优化系列」不使用第三方库,Bitmap的优化策略

如今市场上有很多封装好的第三方库,对Bitmap内存也是做到了很好的优化,比如Glide、Fresco,每次加载只要直接调用就好,但是除掉第三方库外,我们还是需要去了解一下Bitmap的基本优化手段。一、Bitmap内存进程首先我们有必要去了解一下Bitmap的基本知识点,在Android3.0之前,Bitmap的对象是放在Java堆中,而Bitmap的像素是放置在Native内存中,这个时候需要手动的去调用recycle,才能去回收Native内存;在Android3.0到Android7.0,Bi

2021-09-12 20:08:14 164

原创 【Jetpack篇】协程+Retrofit网络请求状态封装实战(2)

一、前言前几天发布了一篇【Jetpack篇】协程+Retrofit网络请求状态封装实战,在评论区里也收到了一些同僚的反馈:…具体问题可以直接移步到上一篇评论区查看。因为有几个问题点还蛮重要,所以就上一篇文章新增了一些内容,主要如下:✅ 新增局部状态管理。如同一个页面多个接口,可以分别管理状态切换;✅ UI层新增Error,Empty,Success的Callback,开发者可以自由选择是否监听,处理业务逻辑更直观、方便;✅ 结合第三方库loadSir,统一切换UI。✅ 请求调用更加简单

2021-05-13 21:35:52 496

原创 【Jetpack篇】协程+Retrofit网络请求状态封装实战

前言在App中,对于网络请求状态一般性的就分为加载中、请求错误、请求成功、请求成功但数据为null。为了用户体验,不同的状态需要对用户展示不同的界面,例如网络异常的提醒,点击重新请求等。之前项目一直都是以Retrofit+RxJava+OkHttp为网络请求框架,RxJava已经很好的封装了不同的请求状态,onSubscribe、onNext、onError等,只需要在不同的回调中做出相应的动作就ok了。RxJava很好用,但随着新技术的出现,RxJava的可替代性也就越高。Kotlin的协程就是这么

2021-05-13 21:34:40 922

原创 【Jetpack篇】LiveData取代EventBus?LiveData的通信原理和粘性事件刨析

LiveData是一个可以在给定生命周期内观察到的数据持有者类。一个观察者可以与一个LifecycleOwner成对地添加,并且只有当配对的LifecycleOwner处于活动状态时,这个观察者才会收到数据变动的通知。LiveData-ViewModel-Repository以下是LiveData结合ViewModel请求数据的伪代码,这也是JetPack中最常见的一种写法。ViewModel层:继承ViewModel并创建LiveData,通过postValue将数据发射给UI。class E.

2021-05-13 21:33:14 455

原创 【Kotlin篇】聊一聊Kotlin的扩展函数

一、何为扩展函数就一句话不改变原有类的情况下,扩展新的功能。对于Java来说,扩展函数这一特性是没有的,但是Java中还是具体相同功能的特性,比如说继承,设计模式中的装饰模式。就功能来说,Kotlin中的扩展函数与之是一致的,但是Kotlin原生就自带此特性,使用也更加简练。Kotlin的扩展函数该如何使用?创建一个普通的类DogKt,类里面有两个已经存在的方法,run()和cry()。class DogKt{ fun run() = "狗会跑" fun cry() = "狗会

2021-05-13 21:31:34 312

原创 【Jetpack篇】Paging的新增与删除

一、整体思路:创建新的数据源装载旧数据以及新增/删除数据。利用List集合进行增加和删除,通过loadInitial将最新的List数据返回给PagedList,最后调用submitList更新数据。以PageKeyedDataSource作为数据源为例,首先新建一个DataSource的类PageKeyedDataSourceExtension继承PageKeyedDataSource,在新的DataSource中创建一个List装载新的数据,也是后续用来增加和删除数据的集合。 public.

2021-05-13 21:30:16 1150

原创 啥是佩奇?打造Android界佩奇

一、前言前段时间被“啥是佩奇”短片感动了一把,在网络上也掀起了一阵热潮,老爷子用自己的焊铁技术为孩子打造了别样的佩奇,今天用我那浅薄的知识打造Android佩奇。二、思路:1、将佩奇分为鼻子,眼睛,嘴巴等相应的部位;2、根据各个部位判断使用贝塞尔曲线还是运用canvas直接绘制图形。因为后面需要实现绘制的动态效果,则这里绘制图形时使用path绘制。3、使用贝塞尔曲线绘制佩奇整个身体,耳...

2019-01-27 16:52:24 220

原创 Android自定义View_绘制菱形图片

前言在实际项目中,用户头像,音乐专辑都有可能用到圆形,菱形等无规则图像,需要自己自定义View实现相应的功能。思路需求:制作圆角菱形的图片思路:1、绘制出圆角矩形的遮罩层;2、将矩形旋转45°;3、使用画笔的PorterDuffXfermode的SRC_IN属性;4、将图片绘制遮罩层上。PorterDuffXfermodePorterDuffXfermode在网上有许多讲解它...

2019-01-27 16:51:09 1910

空空如也

空空如也

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

TA关注的人

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