主页

OpenGL第一弹 图片液化之向前

图片向前液化 demo 如下,注释都比较完善可供参考 package com.gowow.advimageeditor.example import android.content.Context import android.graphics.Bitmap import android.graphics.PointF import android.opengl.GLES20 import android.opengl.GLSurfaceView import android.opengl.GLUtils import android.opengl.Matrix import android.view.MotionEvent import java.nio.ByteBuffer ...

阅读更多

2024年度总结

当你有机会做出选择的时候,不要让自己后悔 今年的年度总结迟迟未动笔,不太敢写,想来我也到了不敢回忆过去的年纪了 恍惚之间,来到了一月下旬,最近很忙,公司产品改为了一周发一个版,我一个人迭代一个产品,对接三个产品经理的需求……纯牛马 我想,25年或许应该考虑看看换个工作,这一份工作能学的东西在我看来已经到头,我不能总是做应用层的东西,从工作角度说,触达底层才能在激烈的竞争中存活下来,从职业前景上说,我在这个小公司也没混上个管理当…2025年的高考生有1400万左右,四年以后肯定会对就业市场造成冲击,后面的机会会越来越少,留给我的时间不多了 今年似乎并没有学到什么,一直说要尝试编译AOSP,拖延到现在也并未完成,博客似乎成为了我发牢骚的地方,不应该是这样的,我应该要多写一些技术,...

阅读更多

想家了

二零二四年九月八日——想家了 好想回家,在深圳打工的日子有些一眼望不到头,我只是这座城市中,最普通最平凡的一颗石子,却总是幻想成为大卫马丁内斯,这种感觉太令人厌恶了 九月七号,老爸来深圳看我了. 老爸是来深圳出差,顺路来看我的.我不知道有缘能看到这里的朋友,您能理解这种感觉吗?自己在其他的城市,过着或好或坏的生活,但是向家里往往是报喜不报忧,父亲的到来,让我在开心之余,却是非常的惊恐,害怕家人发现自己过的太糟糕,害怕家人对自己过度关心,相信每位去到陌生城市打工的孩子,都有这样的害怕. 我也害怕 我快24岁了,我害怕 父亲母亲马上50了,她们或多或少都希望我快些成家,能够为家庭带来新的成员,能够有自己的孩子,能够作为顶梁柱将老的家庭延伸到新的家庭上,我也何尝不是这样希望的? ...

阅读更多

基于深度优先的图片联通域算法

需求 产品这边需要我能够根据用户画笔轨迹来生成Rect,比如用户在Mask上绘制了3笔,那就是3个区域,但是如果增加一画将3根轨迹连接起来那就是1个区域,如果用橡皮擦断一分为二,那就是2个区域 这个需求一开始听起来感觉挺简单的,和遍历位图之类的没差,后面才发现有点难做,第一个方案采用二遍扫描法,第一遍扫出所有的轨迹起点,第二遍根据起点进行扫描计算出多个Rect 但是两边扫描法耗时太久了,我也不知道我有没有写对,反正扫出来要遍历图片一千多次,我的天这谁能接受啊 方案 经过和iOS端同事的探讨,以及结合GPT,最终得出了这种情况下使用洪水填充算法最佳,洪水填充也是深度优先搜索(DFS)搜索算法的一种应用 代码 #include <jni.h> #include &...

阅读更多

2023年度总结

好快啊,2023就要过去了 今年是我出来正式参加工作的第一年,也着实是狠狠体验了深圳这个全中国加班最严重的城市 今年学了挺多东西,下面总结一下 音视频方面,ffmpeg我现在已经可以称得上是熟练应用了,但是也没深究过其底层的编码器实现,我感觉是挺深奥的 MediaCodec 这东西是很好用,但是写帧如果要加一些特效确实是不太方便,目前只掌握了对Surface,texture等View进行录制的操作 今年也有接触到一些要用NDK来实现的业务,但是做的都比较浅显吧,我希望明年还是能够多接触一些有深度的内容 Compose 这个是我今年比较重点学习的内容,目前已经能够做到想要的效果了,但是没有做过Compose手势交互相关的内容,我感觉和原生View差不多 今年A...

阅读更多

Compose+Navigation,现代化的Android路由方式

闲话 说实话,我真的受够了Android传统开发中的页面跳转传参,Activity跳转Activity,Fragment跳转Fragment,各种不同层级的页面相互跳转,有的时候需要上一级页面的相关数据来上报埋点,有的时候需要上报的埋点数据甚至需要传递五层,加上代码中写死的String Key,我的天哪,看起来就像是地狱一样,最近我打算从0开始开发一个视频剪辑的APP,打算用Compose来进行简单的页面搭建,用原生方法进行复杂以及需要高性能的页面搭建 Navigation以前就知道了,是Google想要倡导单Activity,Navigation控制Fragment的一个库(虽然Google自己的官方Demo也没遵守这一点),这个东西在传统View时期还是挺有局限性的,但是当我将...

阅读更多

GradleDSL,使用build-logic来管理项目

序言 随着项目越来越庞大,为了更好的解耦代码,肯定会需要将不同的UI,功能,抽离为模块,一些大公司会将模块抽的非常细致,一来是为了防止过度耦合带来的难以维护,二来是为了简化Build时间,一个功能编译一个功能的Model即可,而不需要全量编译,Android的模块化开发与相关的模块管理是成为资深Android开发的必修课,笔者在现在并没有可以称得上是资深的技术能力,但是该篇文章也仅仅是我对与Gradle的一些自己的看法 该篇文章中的流程是我按照官方模板项目 Now in Android 来进行分析的 KotlinDSL DSL即domain-specific language是在特定场景下的开发语言,与之对应的是通用开发语言 在我接触的很多项目中,都是采用Groovy来进行开...

阅读更多

AndroidJitPack将编写好的库发布为远程依赖

发布流程 仓库地址 特别感谢 感谢Youtuber @Mikes-Code 制作的视频 Publish Your Android Library (AAR) to JitPack.io Repository | Android Studio 代码与库配置 在AndroidStudio创建一个新项目,这个项目需要包含所需发布到JitPack的功能实现库 我这个项目的结构如图下所示 我们需要发布的库是该项目下的ffmpeg-kit-android-lib,这是一个基于FFmpegKit二次编译满足我的需求的库 该库已经发布在github上,地址为ffmpeg-kit-android-lib 在该库中,我们仅需配置一个jitpack.yml文件,而这个yml文件中仅...

阅读更多