自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (2)
  • 收藏
  • 关注

原创 RecyclerView实现画廊效果|列表选中位置居中|列表位置固定|第一个项目居中|列表平滑滚动

基于RecyclerView实现图片画廊效果, 关键词:图片居中显示,RecyclerView平缓滚动,第一个视图居中,最后一个视图居中

2021-07-03 22:40:31 4520 12

原创 View与Activity之间共享元素动效原理

但是在实际在开发当中,View面向Activity和View与View之间跳转的应用场景是比较频繁的,这2个场景Android源码并未提供相应的接口使用。过程的核心要点就是将关联的共享元素View的原位置和尺寸带入新的视图当中,然后设置新的视图当中相应的共享元素View从原位置开始执行属性动效,提供一种类似从原位置移动过来的感受。还有较多不足之处,各位读者如有更好的想法,欢迎提出一起讨论。此处简要介绍下Android原生的共享元素动效的用法和场景,Android原生提供的共享元素动效用法基本为2步。

2022-09-26 22:02:56 1221 1

原创 Android酷炫音乐律动动效部署到Maven仓库

此前自行开发了2项音乐律动动效,分别是实现酷我音乐的流星雨动效和实现网易云音乐的粒子动效,为了便于开发和使用,将相应动效库部署到Gitee上,以公开库的形式提供给大家使用。在要添加该远程依赖库时,Gitee的url并非网页地址,其设置的url形式如下(具体可以对照例子的内容去理解)这一步就是通过git将上一步生成的本地maven库提交到Gitee上的对应仓库上,此次不赘述步骤了。如你的项目中有应用到相关的音乐律动动效,配置和使用步骤如下。(1)布局中引用以下所示的实现类。(1)布局中引用以下所示的实现类。

2022-09-18 16:50:37 1154

原创 基于Jetpack之Paging控件分页加载瀑布式列表

Paging是Jetpack推出的分页加载组件,可以应用于分批次从网络/本地数据库请求数据,实现分批加载显示的功能。本文结合Room本地数据库展示Paging分页展示的功能实现过程,以及部分原理的说明

2022-07-10 16:07:49 782

原创 仿小米相册列表实现自定义带快速索引功能的RecyclerView

仿小米相册列表实现自定义带快速索引功能的RecyclerView文章目录篇章目标要点一、实现效果二、设计布局原理三、关键代码实现1.浮标随手势移动2.浮标随列表移动3.列表随浮标移动而滚动学习心得篇章目标要点`RecyclerView是一种常用的列表容器,但是在展示大量内容时,如何快速找到我们想要定位的内容在设计中一般都很必要考虑的。比如在小米手机的本地相册展示时就使用了一个快速引用的,通过拖动索引浮标就可以快速找到对应位置。本文参照小米相册尝试实现一种带快速索引功能的RecyclerView.

2022-05-08 21:05:05 601

原创 Activity启动过程源码流程梳理和解读

篇章目标要点AMS(全称ActivityManagerService)作为四大组件的管理者,在Android系统工作流程当中起着非常重要的角色,四大组件当中Activity使用则又最为广泛,因为了解Activity的启动流程有助于加深自身对于Android系统工作原理的认知。本文是结合源码的理解和网上已经梳理的一些文章梳理了下自己对Activity启动过程的认识源码路径AMS主要代码位于两个路径下(以Android9.0为目标分析版本)http://androidxref.com/9.0.0_r3/

2022-04-03 15:48:36 2568

原创 Android加载3D模型的学习笔记

Android加载3D模型笔记

2021-12-17 00:13:05 5338 1

原创 Android动态代理模式实现一个可边听边存的播放器

篇章目标要点音视频的开发现在是非常流行的,在移动端播放在线音视频是非常耗费流量的场景。因此一个良好的播放器要做到边听边存,相对于用户当前的播放进度保留缓冲余量,但是避免一次性将全部文件缓冲,在缓存余量不足时能够恢复缓存。播放器设计已有很多示例,此篇文章不会阐述播放器如何开发,重点内容是基于动态代理如何实现缓存控制。动态代理概念按照《Java编程思想》一书中的定义,代理是基本的设计模式之一,它是你为了提供额外的或不同的模块,而插入的用来代替“实际”对象的对象,代理通常充当着中间人的角色。动态代理可以动态

2021-11-20 21:06:55 2620

原创 Android粒子动效CPU占用率优化笔记

篇章目标介绍之前看到网易云,酷我音乐都发布过用于播放器页面粒子动效的效果,之前写的第一篇文章已经重点介绍了粒子动效实现的核心问题和完成效果的主要代码介绍;计划在第二篇文章针对粒子动效的资源占用进行优化和完善UI展示效果。本文是第二篇文章,负责性能优化的方案说明性能测试方法性能优化方案性能优化代码性能优化效果心得...

2021-10-16 10:40:19 944

原创 Android加密存储之Security源码分析和基本用法介绍|Android敏感信息通过AES256加密存储

篇章目标要点国家法律法规越来越注重用户信息安全的问题,针对敏感个人信息也要求实行必要的加密存储手段,比如针对手机号/身份证/密码等敏感信息需要进行加密存储。Androidx提供了Security框架可以支持必要信息的加密和解密。Security源码分析Security的加密逻辑是在google开发的Tink框架中实现的,其关键的类和方法信息如下文所述。其中StreamingAhead是一个接口类,其实现类包括AesCtrHmacStreaming和AesCtrHkdfStreaming分别对应的是两

2021-10-10 20:31:49 1065

原创 Android自定义View高级动效---粒子动效实现|音乐播放器粒子动效|实现酷我网易云粒子动效

篇章目标介绍之前看到网易云,酷我音乐都发布过用于播放器页面粒子动效的效果,于是打算自己也动手做一个,产品目标是对标酷我手机app的动效设计,实现过程完全基于自身的推测理解予以实现。计划通过两次完全完成这个项目,第一篇文章重点介绍粒子动效实现的核心问题和完成效果的主要代码介绍;计划在第二篇文章针对粒子动效的资源占用进行优化和完善UI展示效果。本文是第一篇文章粒子动效核心问题粒子动效的是需要模拟太阳光扩散的效果,要体现粒子运动的规律和源源不断的粒子发散的效果。要达成目标,重点需要认识以下4个问题问题1:

2021-10-06 13:14:33 1590

原创 CollapsingToolbarLayout折叠过程源码解读和实现自定义吸顶RecyclerView|吸顶标题栏

二级标题二级标题

2021-10-05 15:29:49 909

原创 Android自定义View高级动效之---安卓流星雨动效|Android流星雨专辑封面

篇章目标要点最近看到酷我音乐App出了一则《穹顶流星》动效,看完之后决定自己尝试一下实现,本文将围绕通过自定义View实现流星雨效果,可以看到流星雨环绕专辑图的高级动效。通过完成这项开发,能够更深的理解自定义View。实现效果先上图看下效果,中间设置的是外部传入的图片,四周是通过自定义View实现的流星效果核心设计思路1.裁剪ImageView原图获得圆形图片这部分的基本思路是先将原图缩放至与目标大小合适的尺寸,然后进行裁剪。其关键步骤是需要设置相交取背景,这部分有较多人员以及整理了相关资

2021-10-03 16:23:22 986 2

原创 线程安全你该知道的事:ReentrantLock源码解析及加锁原理

篇章目标说明在开发中经常需要用到多线程执行一些耗时操作,涉及多线程则需要考虑线程安全的问题,ReentrantLock是解决线程安全问题常用的一种轻量锁ReentrantLock应用场景适用于存在多线程对同一个对象进行操作的情况,为了避免产生运行冲突/空指针等问题,比如存在多线程对一个静态类方法操作,多线程对同一个变量对象,多线程对一个单例类进行操作,这些情况都需要引入ReentrantLock锁ReentrantLock基本用法其用法在其源码注释中已有解释,基本用法如下 priv

2021-09-26 19:22:03 185

原创 基于Glide自定义实现ImageView添加图片渐变倒影

篇章目标要点适用场景Glide原有转换工具的启示自定义转换类实现图片倒影学习心得

2021-09-24 00:10:39 918

原创 Android可折叠标题栏实现|RecyclerView吸顶列表实现|CollapsingToolbarLayout折叠布局用法

篇章目标要点此前看到一些app有着炫酷的可折叠的UI,心里想着如果哪一天我也可以自己动手实现这些美观的UI就好了。偶然中发现了安卓提供的Material Design的妙用,决定动手实现向往已久的可折叠标题栏。本文的主要是讲述Material Design组件中的CollapsingToolbarLayout实现可折叠标题栏的过程,中间会穿插着AppBarLayout控件的用法实现效果首先放置一下完成的效果,如以下视频所示,打开页面时可以看到完整的标题栏,此时标题栏专辑封面是铺开状态,随着向上的滑动动

2021-09-20 22:54:43 1876

原创 Retrofit架构和源码解析和基本用法代码

篇章目标要点Retrofit是目前最为流程的网络访问框架,其内部集成了OkHttp框架。Retrofit用法非常简单,本文目的是探究一下其工作原理,通过源码了解其是解析注解参数的过程,以及处理网络返回信息的过程。计划在下一篇文章阐述其如何整合OkHttp进行网络请求的过程,以及内部的拦截器的工作原理。Retrofit源码可以在Gitee上获取Retrofit源码,便于在本地阅读git clone https://gitee.com/mirrors/retrofit.gitRetrofit基本用法

2021-09-18 17:57:16 238

原创 Glide源码教会我的抽象工厂模式用法

篇章目标要点日常开发工作中,新入职场的童鞋对于接口Interface的最重要的认识就是用于异步通信,可以用于数据回调。今天我想结合Glide源码阅读中发现的接口Interface用途,引出今天的话题抽象工厂模式的用法。在介绍抽象工厂模式之前,先介绍下简单工厂模式的常见用法,随着展开抽象工厂模式的用法,优缺点分析,最后再结合Glide源码强化一下这种设计模式的运用。简单工厂模式定义:由一个工厂对象决定创建出哪一种产品类的实例。适用于创建一群相关类,如以下结构示例,一个用于生产形状的基类。被子类继承后可以

2021-09-12 23:03:55 111

原创 玩转RecyclerView | 实现子视图叠加 | 3D画廊效果 | 高级动效 | Android 3D坐标系介绍

之前写的一篇文章展示了RecyclerView实现的画廊效果,适用于专辑/图片/列表浏览效果。本篇文章阐述如何基于RecyclerView实现如下图所示的3D画廊效果。以下效果的重点在于实现子视图的图层叠加,滑动过程中的3D旋转效果较为简单。(1)无3D旋转效果图片(1)带3D旋转效果图片。

2021-09-12 15:55:47 6878 31

原创 Glide缓存机制源码解读(三)---缓存大小控制及View生命周期感知逻辑

篇章目标要点Glide是目前最为流行的图片加载框架,内部提供了缓存机制,本文系列目的是记录学习Glide缓存机制要点。缓存最主要的点就是读,写,控制,本文就是围绕这几个方面进行解读。目的是通过向源码学习形成自己的能力进度和思考。目前已经有很多的文章都有撰写相应的学习笔记,部分笔记存在的问题时,所摘取的代码片段未标记代码来源,所以对照源码阅读时,有时找不到位置,本文介绍方法时,会注明相应的类的路径。在第一篇文章中已经介绍了Gilde使用了哪些缓存框架实现的内存缓存和硬盘缓存,完成了下图0.缓存对象构建。第二

2021-09-01 22:37:09 523

原创 利用Android属性动画实现有趣的加载中动效

本文目的平时Android项目中看到的加载中的动效基本上就是转圈的形式,有点审美疲劳。前一篇文章通过ViewGroup做了一个简单的加载中的动效,上一篇文章的主要知识点基于ViewGroup实现自定义组合视图。本文仍然是基于ViewGroup实现自定义组合视图,将重点展示如何充分利用Android提供的属性动效实现一个有趣的加载中动效。文中较多的使用了位移动效,透明度动效。效果介绍实现了一个太阳升级/落下,月亮升起落下/星星眨眼的动效,组合起来之后可以作为加载中动效自定义View代码本次基于自定义

2021-08-29 23:40:34 562

原创 基于自定义ViewGroup实现有趣的加载中动效

本文目的平时项目中看到的加载中的动效基本上就是转圈的形式,有点审美疲劳。网上看到一个有趣的动效,参照着通过ViewGroup做了一个简单的实现。主要知识点基于ViewGroup实现自定义组合视图效果介绍话不多说,直接上视频。实现了一个物体上升/下落的动效,并且可以自动切换形状和颜色。颜色好好配一下效果预估更佳代码工程结构本次实现动效因为引用了res资源,单独设置了一个名称为loading的module存放相应的代码和资源,然后在app主Module中使用绘制形状的自定义View代码绘制形状的

2021-08-25 23:41:39 128

原创 AsyncTask缺点,排队原理及替代方案

本文目的阐述AsyncTask应用的缺点,通过代码分析其内部任务执行的排队原理,线程池原理。并且在文章末尾提出一个针对AsyncTask的替代建议。AsyncTask介绍AsyncTask是Android LEVEL 3引入的用于执行异步任务的工具类,经常被用来执行子线程任务。因为其使用方法非常简单,并且内部有着良好的线程池管理机制,因此在过往的项目中使用较为频繁。简要用法举例new AsyncTask(){ @Override protected Object doInBackg

2021-08-20 00:17:14 1890

原创 Glide缓存机制源码解读(二)---网络图片下载及缓存过程

Glide缓存机制源码解读(二)文章目录Glide缓存机制源码解读(二)篇章目标要点一、源码获取二、请求网络图片使用示例三、网络图片的下载流程四、写入缓存流程五、下载前缓存使用流程六、学习心得篇章目标要点Glide是目前最为流行的图片加载框架,内部提供了缓存机制,本文系列目的是记录学习Glide缓存机制要点。缓存最主要的点就是读,写,控制,本文就是围绕这几个方面进行解读。目的是通过向源码学习形成自己的能力进度和思考。目前已经有很多的文章都有撰写相应的学习笔记,部分笔记存在的问题时,所摘取的代码片段

2021-08-15 22:55:09 651

原创 Glide缓存机制源码解读(一)---缓存架构初识

系列文章目录关于Glide缓存源码解读计划分3篇文章完成解读第一章 Glide缓存机制源码解读(一)缓存对象构建过程第二章 Glide缓存机制源码解读(二)缓存的写入和读取实现第三章 Glide缓存机制源码解读(三)缓存的控制和选择文章目录系列文章目录缓存关注要点一、源码获取二、内存缓存对象三、硬盘缓存对象四、硬盘缓存操作接口学习心得缓存关注要点Glide是目前最为流行的图片加载框架,内部提供了缓存机制,本文系列目的是记录学习Glide缓存机制要点。缓存最主要的点就是读,写,控制,本文

2021-07-24 18:15:25 144

PictureGallery.rar

基于Android开发,适用于音视频播放器开发/照片类型/图片浏览类型应用的开发。基于RecyclerView实现画廊效果|列表选中位置居中|列表位置固定|第一个项目居中|列表平滑滚动。实现选中的布局始终处于屏幕位置的中央,同时滑动后能够停留在屏幕位置的中央。本次资源为Android 工程文件压缩包,Android Studio版本为4.1.3

2021-07-03

RecyclerView实现画廊效果.htm

Android开发,基于RecyclerView实现照片画廊效果,选中位置居中显示,实现了第一个项目居中,最后一个项目居中,实现了RecyclerView平滑滑动

2021-07-03

空空如也

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

TA关注的人

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