目录前言一、基本使用二、对象与集合的使用三、浅拷贝与深拷贝四、Kotlin的应用总结前言什么是原型模式?它是指创建对象的种类,并通过拷贝这些原型创建新的对象。它是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采 ......
281
0
0
2023-06-03
目录前言一、Payload的刷新二、Diff的刷新与快速实现方法三、DiffUtil的封装小结前言RecyclerView是我们常用的列表控件,一般来说当Item的数据改变的时候我们需要刷新当前的Item 。如何刷新 RV 的列表?基本上有这几种方式:notifyDataSetChanged()notifyItemChanged(int position)n ......
257
0
0
2023-06-03
目录前言01、 用法02、源码03、结语前言在【Android】线程间通信 - Handler之使用篇主要讲了 Handler 的创建,发送消息,处理消息 三个步骤。那么接下来,我们也按照这三个步骤,从源码中去探析一下它们具体是如何实现的。本篇是关于创建源码的分析。01、 用法先回顾一下,在主线程和非主线程是如何创建 Handler 的。//主线程 pri ......
288
0
0
2023-06-03
目录弱网优化1、Serializable原理1.1 分析过程1.2 Serializable接口1.3 ObjectOutputStream1.4 序列化后二进制文件的一点解读1.5 常见的集合类的序列化问题1.5.1 HashMap1.5.2 ArrayList2、Parcelable2.1 Parcel的简介2.2 Parcelable的三大过程介绍(序 ......
287
0
0
2023-06-02
目录正文01 前期准备02 设置03 视频通话用户界面04 使用虚拟背景导入必要的依赖声明一些变量用虚拟背景加入视频通话切换虚拟背景应用虚拟背景图像应用虚拟背景色应用虚拟背景模糊开启虚拟背景关闭虚拟背景05 总结06 测试07 其他资源正文使用声网 SDK 和 UIKit 创建视频推流应用非常简单,而且声网还有许多功能,可以提高视频通话的质量和便利性。例如, ......
316
0
0
2023-06-01
目录前言一、UI优化1.1 系统做的优化1.1.1 硬件加速1.2 优化方案1.2.1 java代码布局1.2.2 View重用1.2.3 异步创建view1.2.4 xml布局优化1.2.5 异步布局框架Litho1.2.6 屏幕适配1.2.7 Flutter1.2.8 Jetpack Compose1.3 工具篇1.3.1 Choreographer1. ......
262
0
0
2023-05-31
目录何为XML数据如何解析XML数据1.Pull解析2.简单的Pull解析3.SAX解析何为XML数据XML 指可扩展标记语言(eXtensible Markup Language)。可扩展标记语言(英语:Extensible Markup Language,简称:XML)是一种标记语言,是从标准通用标记语言(SGML)中简化修改出来的。 其最主要的功能就是 ......
285
0
0
2023-05-24
目录Dagger2注入框架原理简要分析示例代码生成代码分析DaggerActivityComponent类MainActivity_MembersInjector何处真正产生了实际参数简要流程图(仅适用于本示例)Dagger2注入框架原理简要分析使用Dagger2需要的依赖:implementation 'com.google.dagger:dagger-a ......
276
0
0
2023-05-23
目录概述问题分析原理分析解决思路行动0x01:保留旧ID获取旧ID:public.xml复用旧IDAapt2命令保留新资源ID0x02:修改资源ID需要修改的位置更新R Smali普通IDR$styleable.smali其他细节系统资源aapt2输出R.javaaapt2编译时报系统资源找不到总结概述大家在做游戏切包时,可能都会遇到上图这种资源找不到导致崩 ......
410
0
0
2023-05-20
目录效果图使用WindowManager实现分析问题参考如果想实现一个在桌面显示的悬浮窗,用Dialog、PopupWindow、Toast等已经不能实现了,他们基本都是在Activity之上显示的,如果想实现在桌面显示的悬浮窗效果,需要用到WindowManager来实现了。效果图使用WindowManager实现添加一个悬浮窗: sys_v ......
284
0
0
2023-05-18
目录一、FrameLayout 帧布局二、ConstraintLayout 约束布局1、相对定位2、角度定位3、权重和0dp4、控件排成一排平均分布(默认)5、Group分组6、Barrier屏障一、FrameLayout 帧布局这种布局类似叠加的图片,没有任何的定位方式,当我们往里面添加组件的时候,会默认把他们放到容器的左上角。上面的组件显示在底层,下面的 ......
261
0
0
2023-05-16
目录前言使用方案绕过生命周期检测最终实现总结前言注:只想看实现的朋友们可以直接跳到最后面的最终实现大家是否还在为动态权限申请感到苦恼呢?传统的动态权限申请需要在Activity中重写onRequestPermissionsResult方法来接收用户权限授予的结果。试想一下,你需要在一个子模块中申请权限,那得从这个模块所在的Activity的onRequest ......
288
0
0
2023-05-15
目录一、前景提示二、实现功能2.1 手势监听2.2 触摸事件三、功能优化3.1 优化缩放倍数太大问题3.2 保持原图不缩小一、前景提示最近接到一个查看大图的需求,现在图片展示还不够大,要求还要能缩小能放大还能保存照片。直接开始Google实现方式。二、实现功能根据查询到的结果分为两种,一个是使用手势监听来实现,第二种监听触摸事件来实现手势监听-- Scale ......
250
0
0
2023-05-14
目录1.补间动画的分类和Interpolator2.各种动画的详细讲解3.写个例子来体验下帧动画是通过连续播放图片来模拟动画效果,而补间动画开发者只需指定动画开始,以及动画结束"关键帧",而动画变化的"中间帧"则由系统计算并补齐!1.补间动画的分类和InterpolatorAndoird所支持的补间动画效果有如下这五种,或者说四种吧,第五种是前面几种的组合而 ......
276
0
0
2023-05-14
目录前言 :一 Activity 启动和结束二 Activity 生命周期1 Activity 的四种状态2 流程解读3 具体功能4 总结三 Activity 启动模式分类1 Standard 标准模式2 SingleTop 栈顶复用模式3 SingleTask 栈内复用模式4 SingleInstance 单实例模式四 启动模式的设置1 在Manifest ......
270
0
0
2023-05-10