
Android
文章平均质量分 71
callme大帅
Android/RN/Flutter
移动端跨平台开发5年经验
https://github.com/qq326646683
展开
-
Android学习——Handler通信机制
1. 作用先来思考一个问题,android线程间内存是共享的,为什么我们还需要Handler传递消息?为了UI渲染不卡顿,需要将UI渲染和耗时任务放在不同线程中执行,互不干扰保证UI渲染的流畅性。为了做到第1点,Android默认将UI渲染限制在UI线程中执行// ViewRootImpl.java:@Overridepublic void requestLayout() { if (!mHandlingLayoutInLayoutRequest) { chec原创 2021-12-31 23:36:59 · 1454 阅读 · 1 评论 -
Android实战——RecyclerView条目曝光埋点
一、概要100行代码实现recyclerview条目曝光埋点设计二、设计思路条目露出来一半以上视为该条目曝光。在rv滚动过程中或者数据变更回调OnGlobalLayoutListener时,将符合条件1的条目记录在曝光列表、上传埋点集合里。滚动状态变更和OnGlobalLayoutListener回调时,且列表状态为idle状态,触发上报埋点。三、容错性滑动过快时,视为未曝光数据变更时,重新检测曝光曝光过的条目,不会重复曝光四、接入影响对业务代码零侵入对列表滑动体验无影响原创 2021-12-03 15:46:41 · 2345 阅读 · 1 评论 -
Android实战——Cocos游戏容器多进程通信
一、概要续上一篇搭建篇《Android实战——Cocos游戏容器搭建篇》,本篇带来cocos和Android通信篇的实现和使用, 围绕着多进程通信和cocos-android互调来实现二、通信模型如果不需要主进程的数据,可以直接1->4三、如何实现通信1.1 cocos调androidcocos/mainUI.ts:cocosCallNative(action: String, argument: String, callbackId: String) { jsb.reflec原创 2021-10-15 19:05:00 · 1566 阅读 · 0 评论 -
Android实战——Cocos游戏容器搭建篇
一、前言现在市面上很多app有游戏中心功能,最早的有微信小游戏和QQ小游戏,再后来像bilibili、喜马拉雅、爱奇艺、比心等等应用中也加入了游戏中心模块。本篇文章将介绍如何上手搭建cocos creater游戏容器,先来看看效果:二、准备工作下载并安装最新版本CocosDashboard在Dashborad下载最新版本编辑器在Android Studio安装NDK,我这里安装的是21.1.6352462,目前为止比较稳定在CocosDashboard新建HelloWorld项目原创 2021-07-13 19:13:10 · 1083 阅读 · 2 评论 -
Android学习——VAP源码
一、背景介绍1. VAP(Video Animation Player)是直播中台使用的一个视频动画特效SDK,可以通过制作Alpha通道分离的视频素材,再在客户端上通过OpenGL ES重新实现Alpha通道和RGB通道的混合,从而实现在端上播放带透明通道的视频。已经接入的app同原理实现也用在其他app 抖音、西瓜视频、今日头条、爱奇艺、比心等2. 方案对比目前较常见的动画实现方案有帧动画、gif/webp、lottie/SVGA,对于复杂动画特效的实现做个简单对比方案原创 2021-06-07 12:37:57 · 2033 阅读 · 0 评论 -
Flutter上线项目实战——Vap视频动画
背景透明视频动画是目前比较流行的实现动画的一种, 大厂也相继开源自己的框架,最终我们选中腾讯vap,它支持了Android、IOS、Web,为我们封装flutter_vap提供了天然的便利,并且它提供了将帧图片生成带alpha通道视频的工具,这简直太赞了。VAP(Video Animation Player)是企鹅电竞开发,用于播放酷炫动画的实现方案。相比Webp, Apng动图方案,具有高压缩率(素材更小)、硬件解码(解码更快)的优点相比Lottie,能实现更复杂的动画效果(比如粒子特效)预原创 2021-05-26 14:08:20 · 1446 阅读 · 1 评论 -
AndroidJNI实战——记录实现视频播放器
一、实现工具FFmpeg负责解码GLES+GLSurfaceView负责渲染二、播放器实现流程图1.总流程image2. FFmpeg解码流程:by 雷霄骅3. FFmpeg解码具体流程:创建封装格式上下文打开输入文件,解封装获取音视频流信息获取音视频流索引获取解码器参数根据codec_id获取解码器创建解码器上下文打开解码器创建存储编码数据和解码数据的结构体解码循环4. 渲染流程将解码后的帧数据加载到内存取帧数据用GLES实现GLSu原创 2021-05-26 14:07:52 · 469 阅读 · 0 评论 -
Android&RN&Flutter实战——防抖节流函数
1.背景介绍防抖函数防抖,这里的抖动就是执行的意思,而一般的抖动都是持续的,多次的。假设函数持续多次执行,我们希望让它冷静下来再执行。也就是当持续触发事件的时候,函数是完全不执行的,等最后一次触发结束的一段时间之后,再去执行。节流节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。2.经典举例防抖函数:搜索页面,用户连续输入,等停下来再去触发搜索接口节流函数:防止按钮连点3.Android实现代码实现:.原创 2021-05-26 14:07:11 · 859 阅读 · 2 评论 -
Android实战——系统悬浮窗踩坑记
1.背景介绍开启悬浮窗后,小窗悬浮在app内及桌面上,并保持悬浮窗页面所有状态预览video路由介绍image功能概览(⚠️:【】标记处有坑,后面有解释和解决办法)splash->首页->详情页->悬浮窗页->回到桌面->点击桌面App图标->【悬浮窗页】splash->首页->详情页->悬浮窗页->开启悬浮窗->点击悬浮窗->悬浮窗页splash->首页->详情页->悬浮窗页-&g原创 2021-05-26 14:06:10 · 571 阅读 · 0 评论