自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 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 1409 1

原创 Android实战——RecyclerView条目曝光埋点

一、概要100行代码实现recyclerview条目曝光埋点设计二、设计思路条目露出来一半以上视为该条目曝光。在rv滚动过程中或者数据变更回调OnGlobalLayoutListener时,将符合条件1的条目记录在曝光列表、上传埋点集合里。滚动状态变更和OnGlobalLayoutListener回调时,且列表状态为idle状态,触发上报埋点。三、容错性滑动过快时,视为未曝光数据变更时,重新检测曝光曝光过的条目,不会重复曝光四、接入影响对业务代码零侵入对列表滑动体验无影响

2021-12-03 15:46:41 2257 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 1506

原创 Android实战——Cocos游戏容器搭建篇

一、前言现在市面上很多app有游戏中心功能,最早的有微信小游戏和QQ小游戏,再后来像bilibili、喜马拉雅、爱奇艺、比心等等应用中也加入了游戏中心模块。本篇文章将介绍如何上手搭建cocos creater游戏容器,先来看看效果:二、准备工作下载并安装最新版本CocosDashboard在Dashborad下载最新版本编辑器在Android Studio安装NDK,我这里安装的是21.1.6352462,目前为止比较稳定在CocosDashboard新建HelloWorld项目

2021-07-13 19:13:10 899 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 1784

原创 Flutter上线项目实战——Vap视频动画

背景透明视频动画是目前比较流行的实现动画的一种, 大厂也相继开源自己的框架,最终我们选中腾讯vap,它支持了Android、IOS、Web,为我们封装flutter_vap提供了天然的便利,并且它提供了将帧图片生成带alpha通道视频的工具,这简直太赞了。VAP(Video Animation Player)是企鹅电竞开发,用于播放酷炫动画的实现方案。相比Webp, Apng动图方案,具有高压缩率(素材更小)、硬件解码(解码更快)的优点相比Lottie,能实现更复杂的动画效果(比如粒子特效)预

2021-05-26 14:08:20 1292 1

原创 AndroidJNI实战——记录实现视频播放器

一、实现工具FFmpeg负责解码GLES+GLSurfaceView负责渲染二、播放器实现流程图1.总流程image2. FFmpeg解码流程:by 雷霄骅3. FFmpeg解码具体流程:创建封装格式上下文打开输入文件,解封装获取音视频流信息获取音视频流索引获取解码器参数根据codec_id获取解码器创建解码器上下文打开解码器创建存储编码数据和解码数据的结构体解码循环4. 渲染流程将解码后的帧数据加载到内存取帧数据用GLES实现GLSu

2021-05-26 14:07:52 401

原创 Android&RN&Flutter实战——防抖节流函数

1.背景介绍防抖函数防抖,这里的抖动就是执行的意思,而一般的抖动都是持续的,多次的。假设函数持续多次执行,我们希望让它冷静下来再执行。也就是当持续触发事件的时候,函数是完全不执行的,等最后一次触发结束的一段时间之后,再去执行。节流节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。2.经典举例防抖函数:搜索页面,用户连续输入,等停下来再去触发搜索接口节流函数:防止按钮连点3.Android实现代码实现:.

2021-05-26 14:07:11 788 2

原创 Android实战——系统悬浮窗踩坑记

1.背景介绍开启悬浮窗后,小窗悬浮在app内及桌面上,并保持悬浮窗页面所有状态预览video路由介绍image功能概览(⚠️:【】标记处有坑,后面有解释和解决办法)splash->首页->详情页->悬浮窗页->回到桌面->点击桌面App图标->【悬浮窗页】splash->首页->详情页->悬浮窗页->开启悬浮窗->点击悬浮窗->悬浮窗页splash->首页->详情页->悬浮窗页-&g

2021-05-26 14:06:10 513

原创 Flutter上线项目实战——图片视频预览

interactiveviewer_gallery图片预览&视频预览&图片视频混合预览的容器UI支持双指缩放支持双击放大支持左右切换图片支持下拉手势返回, 伴随缩小、移动、透明度变化支持视频失去焦点自动暂停预览qiniu/youtubeapk download安装因为该库是在InteractiveViewer基础上实现的, 所以flutter版本不低于1.20.0interactiveviewer_gallery: ${last_version}如何使用九

2021-05-25 14:52:28 1342 1

原创 Flutter上线项目实战——性能优化篇(未完待续)

例子 1、现有一个滑动聊天页面出现/隐藏jump按钮的需求:????优化前:ListView外层setState实现:class _ChatListViewWidgetState extends State<ChatListViewWidget> { ScrollController scrollController; double _chatListOffset = 0; @override void initState() { super.

2021-05-25 14:51:05 155

原创 Flutter上线项目实战——环信客服插件

1.Describe1.封装的环信客服的功能: 初始化、注册、登录、进入会话;2.绘画页面easeUI里包含的同kefu-android-demo、kefu-ios-demo一样的功能:android: 选图片、拍照片、选视频、发文件、发语音、文字、表情ios: 选照片、拍照片、拍视频、发定位、发语音、文字、表情3.语音、视频通话尝试均不可用2.Setup// 环信自带的uiflutter_easemob_kefu: ${last_version}orflutter_easemob.

2021-05-25 14:49:59 559 1

原创 Flutter上线项目实战——队列任务

一、应用场景队列压缩视频队列解密视频队列请求网络等等二、实现思路定义一个任务队列taskList [先进先出]提供添加任务方法取第一个任务执行执行完后,从taskList移除递归获取第一个任务并执行任务直到taskList为空停止队列任务三、具体实现QueueUtil.dartclass QueueUtil { /// 用map key存储多个QueueUtil单例,目的是隔离多个类型队列任务互不干扰 /// Use map key to store mult

2021-05-25 14:48:42 830 1

原创 Flutter上线项目实战——即时通讯Protobuf

一、应用背景:Protobuf是google 的一种数据交换的格式,它独立于语言,独立于平台。优点:json优点就是较XML格式更加小巧,传输效率较xml提高了很多,可读性还不错。xml优点就是可读性强,解析方便。protobuf优点就是传输效率快(据说在数据量大的时候,传输效率比xml和json快10-20倍),序列化后体积相比Json和XML很小,支持跨平台多语言,消息格式升级和兼容性还不错,序列化反序列化速度很快。缺点:json缺点就是传输效率也不是特别高(比xml快,但比prot

2021-05-25 14:47:42 1015

原创 Flutter上线项目实战——即时通讯端对端加密(E2E)

1.背景知识数字签名算法EdDSA: ed25519密钥交换算法ECDH: x25519加密算法AES参考阅读: http://www.freebuf.com/articles/database/113855.html2.设计思路>> image link3.流程代码引入加解密库cryptography: ^1.4.0主流程 static Future<void> mainLogic() async { // User A .

2021-05-25 14:46:38 1064 1

原创 Flutter上线项目实战——苹果内购

一、以下是消耗类和非消耗类的正常流程(订阅类的不太清楚)1.进入充值页面,向app server获取productIdList及展示信息。2.用productIdList调iapsdk获取productDetailList(用来发起支付的参数)。3.用户选择一个productDetail,然后调iap sdk发起支付。4.监听到apple支付成功,将purshaseId、receipt发给app server。5.app server 向apple server发起校验请求,比对in_app.

2021-05-25 14:45:37 1912

原创 Flutter上线项目实战——腾讯点播直播下载

线上项目应用运行效果:http://file.jinxianyun.com/tencentplayer.MP4demo apk:http://file.jinxianyun.com/flutter_tencentplayer_0_11_0.apk0.Tip必须真机android打release包必须加–no-shrink: flutter build apk --release --no-shrink打包混淆配置参考issue991.Setupflutter_tencentplayer

2021-05-25 14:44:04 490

原创 Flutter上线项目实战——防止录屏

1.Setupflutter_forbidshot: 0.0.12.UsageIOS APIGet the current recording screen state (获取到当前是否在录屏)bool isCapture = await FlutterForbidshot.iosIsCaptured;Screen recording status changes will call back (录屏状态变化会回调)StreamSubscription<void>

2021-05-25 14:41:33 1418 2

原创 Flutter上线项目实战——路由篇

1. 应用场景开发中经常遇到路由跳转时拿不到context怎么办,eg: token失效/异地登录跳转登录页面。获取不到当前路由名称怎么办,eg: 点击push推送跳转指定路由,如果已经在当前页面就replace,如果不在就push。注册监听路由跳转,做一些想做的事情,eg:不同路由,显示不同状态栏颜色。监听当前页面获取、失去焦点等等…2. 解决方案解决思路:MaterialApp 的routes属性赋值路由数组,navigatorObservers属性赋值路由监听对象Nav

2021-05-25 14:39:25 209

网上选课系统

管理员增删改学生、课程、教师的信息,管理排课。教师查看课程表、录入成绩。学生在线选课、查看成绩。

2015-01-07

空空如也

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

TA关注的人

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