自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OpenGl 第二站——自定义GLSurfaceView

系列链接OpenGl 第一站——创建自己的EglHelper(没看过EglHelper的,先看上一篇)GlSurfaceView的流程实现步骤1、继成SurfaceView,并实现其CallBack回调2、自定义GLThread线程类,主要用于OpenGL的绘制操作3、添加设置Surface和EglContext的方法4、提供和系统GLSurfaceVie...

2019-10-15 22:13:44 378 1

原创 OpenGl 第一站——创建自己的EglHelper

EGL:是OpenGL ES和本地窗口系统的接口,不同平台上EGL配置是不一样的,而OpenGL的调用方式是一致的,就是说:OpenGL跨平台就是依赖于EGL接口。为什么要自己创建EGL环境?当我们需要把同一个场景渲染到不同的Surface上时,此时系统GLSurfaceView就不能满足需求了,所以我们需要自己创建EGL环境来实现渲染操作。注意:OpenGL整体是一个状态机,通过...

2019-10-14 21:03:55 318

原创 android 打包aar,并上传Maven

最近工作要求实现一个应用统一门户平台,现尝试了两条方案,一种使用了腾讯的shadow,一种是打包aar并上传maven引用的方式。打包aar并上传maven,我分别使用了maven和maven-publish两条插件,这里主要是记录一下插件的gradle配置。准备我这里是先把参数放入了gradle.properties中# 发布私有仓库的地址,我这里是本机地址MAVEN_URL=http://xxx.xxx.com/repository/maven-releases/#MAVEN_

2021-08-17 14:10:42 999

原创 KMP算法的理解

——写出来就是为了内化前言任何算法在理解之前看的都是一脑雾水,但不要慌,抓住几个关键点,再依次去推导,然后就会豁然开朗了。然后再回过去看之前那些博客大神的解说就会很轻松的理解了。简单来说对于算法我的办法就是:先明白是怎么实现的,再去理解它的实现原理。关于KMP的来历什么的等等这里就不说了,这里只记录如何理解KMP。下面都以原始参数str="AABAABAABC",条件参数pat="AABC"为参数说明理解现在就我们就来理解一下KMP。首先,我们需要对pat数据进行处理,通过DFA

2021-05-26 17:06:34 162 1

原创 深入理解Java泛型

——写出来就是为了内化泛型的定义什么是泛型,泛型的本质就是参数化类型。也就是说,泛型就是将所操作的数据类型作为参数的一种语法。public class Play<T>{ T play();}泛型的作用写出更灵活通用的代码泛型代码就好像模板,生产时根据输入的不同材料,就可以返回不同的结果。这也是泛型的最初宗旨。将代码安全性检查提前到编译期在没有泛型之前,容器(比如List)无论加入什么数据,存储的数据类型都是向上转型Object,从而在取的时候都不知道是

2021-05-26 14:17:27 137

原创 Android启动优化之异步启动自定义启动器(二:基本逻辑)

Android启动优化之异步启动自定义启动器(一)实现类说明AppStartTaskExecutor(启动任务的线程类):这个类就是上篇说的根据CPU核数获取对应的线程类AppStartTask(启动任务的基本):包含任务的基本参数和实现了任务的基本方法的基类AppStartTaskDispatcher(启动任务的调度类):用于关联AppStartTaskRunnable(启动任务的流程执行类)...

2021-05-13 11:29:42 484

原创 JCenter挂掉后的解决方案

Bintray 和 JCenter 截止 2021 年 3 月 30 日之后不能上传任何库,2022 年 2 月 1 日之后不能下载任何库。解决方案:在库开发者迁移项目之前,我们可以先使用镜像仓库 buildscript { repositories { // 阿里云云效仓库:https://maven.aliyun.com/mvn/guide maven { url 'https://maven.aliyun.com/repository/jcenter

2021-05-13 08:55:38 2664

原创 Android Studio 更新问题

Android Studio每次更新都会出现各种情况,打算做了下问题的笔记。版本:4.2问题:javax/xml/bind/JAXBException原因:直观的原因是JDK1.9中不再包含JAXB API的Jar包了。一般引起这个问题的有两个地方,一是AS升级到4.2后,软件默认的JDK版本升到1.9;二是build.gradle中配置了JDK1.9版本。解决:把JDK改写1.8就好。项目右键Open Module Settings,打开Project Structure,第一种情况,在S

2021-05-08 14:06:24 178 1

原创 Android启动优化之异步启动自定义启动器(一)

前言本文只是笔记记录核心思想:子线程分担主线程任务,并行减少时间。异步优化分为:常规异步优化和最优异步优化两种常规异步优化的痛点:(1)代码不优化(2)场景不好处理(子任务中有依赖关系)(3)维护成本高最优异步优化核心思想:充分利用CPU多核,自动梳理任务顺序启动器流程:(1)代码Task化,启动逻辑抽象为Task(2)根据所有任务依赖关系排序生成一个有向无环图(3)多线程按照排序后的优先级依次执行讲完了核心思想和流程,在实现之前,我们先来熟悉一下

2021-05-07 15:35:14 483 2

原创 Gradle Composite builds 扩展使用

前言一开始只是想做依赖库的版本管理,所以本文的自定义Plugin是在Gradle Composite builds的基本上去实现的,如有不清楚Gradle Composite builds配置的小伙伴,可以先去了解一下https://blog.csdn.net/u010629285/article/details/116005860Gradle配置//build.gradle.ktsbuildscript { repositories { // 需要添加 jc.

2021-05-06 18:19:09 621

原创 AspectJ 学习笔记(一)

简介AspectJ 作为 Java 中流行的 AOP(aspect-oriented programming) 编程扩展框架,其内部使用的是BCEL框架来完成其功能。调用时机是在 Java 文件编译成 .class 文件之后,生成 Dalvik 字节码之前执行。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合性降低,提高程序的可重用性,同时大大提高了开发效率。无侵入性,修改方便。此外,AOP 不同于 OOP 将问题划分到单个模块之中,它把涉及到众多模块的同一类..

2021-05-06 15:29:42 442

原创 Android 统一依赖管理

本篇只是作记录。 简述 每个项目从新建开始我们或多或少都会导入各种依赖库,如果项目中只有一个module的话,对于依赖库版本的管理很容易,但是多个module的话,稍加不注意,很容易导入多个版本的库甚至产生版本冲突,更新修改依赖库也需要多处操作,所以我们需要对依赖库版本进行统一管理。(就简单说一下,其实大家都理解) 实现方案 实现依赖库版本的统一管理现在流行的方案大致有三种(有更好的方案,大家可以推荐下): ext(Google推荐) Kotlin + buildSrc

2021-04-22 15:06:52 959

原创 Android 设计模式之建造者模式

定义:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示]。特点:将复杂创建过程封装在内部,对于外部调用的人来说,只需要传入建造者和建造工具,对于内部是如何建造成成品的,调用者无需关心,也不知道,具有良好的封装性,可以使客户端不用知道产品内部组成的细节。实现:Product:被构造的复杂对象 Builder:抽象接口 ConcreteBuildr:Builder接口的具体实现 Director:Builder接口的构造者和使用者

2021-02-23 18:20:08 64

原创 Android 设计模式之观察者模式

定义:也叫做发布订阅模式,定义对象的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新特点:实现观察者与被观察者之间进行解耦实现:Subject(抽象主题):被观察者的一个抽象类,它会把所有观察者的引用保存在一个集合里。抽象主题提供一个接口,可以增加和删除观察者对象。 ConcreteSubject(具体主题):具体的被观察者。当具体被观察者的状态发生改变的时候,会给每一个注册过的观察者发送通知。 Observer(抽象观察者):所有具体观察者的

2021-02-23 13:47:07 54 1

原创 Android 设计模式之单例模式

单例模式定义:一个类只有一个实例,所有调用就使用同一个对象特点:单例类只有一个实例对象 单例对象必须由单例类自行创建 单例类对外提供一个访问该单例的全局访问点实现:私有构造方法 私有静态引用指向自己实例 以自己实例为返回值的公有静态方法懒汉式:需要的时候才去实例化,不需要我就不实例化。不加锁 优点:需要的时候才会实例化变量,实现懒加载(资源利用率高) 缺点:线程不安全 同步锁 优点:线程安全,懒加载 缺点:方法进行同步效率太低 双重锁 优点...

2021-02-22 17:29:45 83

原创 Task 'assemblePlugin' not found in root project 'qiakr-android'

问题Task 'assemblePlugin' not found in root project 'qiakr-android'解决方法1: 删除根目录下的xxx.iml文件中的…的内容,或者删除目录下的.idea和xxx.imi文件,重新导入方法2:在根目录下的build.gradle中首行添加task assemble{}方法3:在根目录下settings.gradle中的in...

2019-11-28 09:48:22 670 1

原创 滴滴插件化框架VirtualApk 接入

预览效果空位滴滴 VirtualApk git地址:https://github.com/didi/VirtualAPKDemo git地址:https://github.com/caixiaoxu/DiDiVirtualApkDemo接入流程新建两个项目,一个为宿主项目(PluginMain),一个是子项目(PluginSub),(保证两个项目中的文件不能有重名)修改两个项目的gr...

2019-11-25 16:25:00 1171

原创 自定义View——地铁显示牌效果

预览效果目录SubwayBoardView.java代码public class SubwayBoardView extends View { private Paint bgPaint, tbPaint, centerBgPaint, centerRingPaint, centerCirclePaint, centerCircleRingPaint, noStationPai...

2019-11-17 15:43:19 278

原创 自定义View——图片自由选区裁剪

Demo地址:https://gitee.com/olleh/ImageCrop.gitpackage cn.com.gyq.crop;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFacto...

2019-11-12 20:07:45 189

原创 ffmpeg视频的翻转vflip、hflip,旋转rotate、transpose、

原图翻转vflip//垂直翻转ffmpeg -i fan.jpg -vf vflip -y vflip.png翻转hflip//水平翻转ffmpeg -i fan.jpg -vf hflip -y hflip.png旋转rotate//旋转60°,是带有黑底的。图片的原始宽高并没有改变ffmpeg -i fan.jpg -vf rotate=PI/3 -y rotate...

2019-11-12 20:06:40 1360

原创 ffmpeg给视频添加个黑色的遮罩

数值越大越不透明@[email protected] -i out3.mp4 -filter_complex color=s=1000x1000:[email protected][vc];[0:v][vc]overlay[out] -ss 0 -to 10 -map [out] -y ou4.mp4ffmpeg -i 123.mov -filter_complex color=s=1000x1000:c=blac...

2019-11-12 20:05:37 1192

原创 自定义View——翻页效果

预览效果目录ChangePictureView.java代码public class ChangePictureView extends View { //Y轴方向旋转角度 private float degreeY; //不变的那一半,Y轴方向旋转角度 private float fixDegreeY; //Z轴方向(平面内)旋转的角度 ...

2019-11-12 19:54:29 264

原创 自定义View——滑动卷尺效果

预览效果目录ScrollTapeView.java代码public class ScrollTapeView extends View { private Paint scalePaint, curScalePaint, bgScalePaint; private TextPaint valuePaint, curValuePaint, unitPaint; ...

2019-11-11 23:39:17 161

原创 ffmpeg实例,fade淡入淡出效果

淡入淡出效果fade应用淡入/淡出它接受下面参数:•type, t指定类型是in代表淡入,out代表淡出,默认为in•start_frame, s指定应用效果的开始时间,默认为0.•nb_frames, n应用效果的最后一帧序数。对于淡入,在此帧后将以本身的视频输出,对于淡出此帧后将以设定的颜色输出,默认25.•alpha如果设置为1,则只在透明通道实施效果(如果...

2019-11-11 17:47:52 1886

原创 Ffmpeg为音频设置采样率,和声道数

原始音频信息,采样率44100 Hz,双声道stereo Duration: 00:11:23.60, start: 0.025057, bitrate: 128 kb/s Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s转码命令ffmpeg -i C:\Users\Administrator\Desktop\m...

2019-11-11 17:47:01 3371

原创 Ffmpeg实例,视频的倒放

视频倒放ffmpeg -i G:\1\c6cfb2d13929eb4967417e0bd81c314c.mp4 -vf reverse -y reverse.mp4Reverse a video clip.Warning: This filter requires memory to buffer the entire clip, so trimming is suggested....

2019-11-11 17:45:32 585

原创 提取视频指定时间图片——MediaCodec版

目录FrameToBitmapUtil.java代码实现public class FrameToBitmapUtil { private final boolean VERBOSE = false; private static FrameToBitmapUtil frameUtil; public static FrameToBitmapUtil getInsta...

2019-11-11 16:00:27 516

原创 ffmpeg实例,实现视频对称效果,镜面水面效果,上下对称,左右对称

上下对称,水面效果 ffmpeg -i 1.mp4 -filter_complex "[0:v]pad=h=2*ih[a];[0:v]vflip[b];[a][b]overlay=y=h" duichen3.mp4 -y 左右对称,镜面效果 ffmpeg -i 1.mp4 -filter_complex "[0:v]pad=w=2*iw[a];[0:v]hfl...

2019-11-11 12:05:12 562

原创 Android自定义View之RoundPhotoView

需求切圆角+图像可自由缩放,最终还要将整个view生成带透明通道的图片https://gitee.com/olleh/RoundPhotoView.gitPaint有一个专门用于处理图片外形特效的API:Xfermode在Android的SDK中Xfermode只有一个子类:PorterDuffXfermodePorterDuffXfermode控制图像的混合模式,影响的是2个图层交...

2019-11-11 12:04:18 88

原创 自定义 View——参考文献

简介上一期我已经简单说过, Canvas 的 drawXXX() 方法配合 Paint 的几个常用方法可以实现最常见的绘制需求;而如果你只会基本的绘制, Paint 的完全功能的掌握,能让你更进一步,做出一些更加细致、炫酷的效果。把 Paint 掌握之后,你几乎不再会遇到「iOS 组可以实现,但你却实现不了」的绘制效果。由于依然是讲绘制的,所以这期就没有介绍视频了。绘制的内容一共需要讲大概 ...

2019-11-11 09:58:55 201

原创 Android设置透明图

Resources res = this.getResources(); BitmapDrawable d = (BitmapDrawable) res.getDrawable(R.mipmap.bg_default_cover); Bitmap bitmap = d.getBitmap(); Bitmap transparentBi...

2019-11-10 23:17:21 86

原创 FFmpeg文档

前言FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。本文将简要介绍一下 FFMPEG 库的基本目录结构及其功能,然后详细介绍一下我们在日常工作中,如何使用 ffmpeg 提供的工具来处理音视频文件。FFMPEG 目录及作用libavcodec: 提供...

2019-11-10 23:16:44 439

原创 Android CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout实现浮动导航栏效果

CoordinatorLayoutAndroid CoordinatorLayout+RecyclerView DemoAndroid CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout实现浮动导航栏效果git地址:https://gitee.com/olleh/MyCoordinate.git所有的操作基本上都在xml中完...

2019-11-10 23:15:00 622

原创 FFmpeg实例,为视频添加一个循环播放的背景音乐

ffmpeg -i E:\1\subtitle\out3.mp4 -i E:\1\subtitle\music3D.wav -filter_complex [1:a]aloop=loop=-1:size=2e+09[out];[out][0:a]amix -ss 0 -t 60 -y out.mp4以下为注解ffmpeg //输入视频,最好选一个大于一分钟的尝试-i E:\1\subt...

2019-11-10 23:13:41 979

原创 Android Glide高斯模糊加载图片

下图的背景图,采用了高斯模糊 Glide.with(this) .load(R.mipmap.bg_default_cover) .crossFade(1000) .bitmapTransform(new BlurTransformation(EditVideoStoryActivity....

2019-11-10 23:12:23 1208 1

原创 自定义View——左右裁剪长按移动控件

预览效果目录AudioSpectrum.javaMusicSlideLView.javaMusicSlideRView.javaMusicLayout.java代码AudioSpectrumpublic class AudioSpectrum extends View { private Paint paint, bgPaint; private ...

2019-11-10 23:11:09 163 1

原创 自定义View——视频封面滑动选择控件

预览效果目录VideoCoverSeekLayout代码/** * 视频封面,封面滑动选择控件 */public class VideoCoverSeekLayout<T> extends FrameLayout { private Paint paint; //线的颜色 private int lineColor = Color.pars...

2019-11-10 22:55:15 827

原创 自定义View——点赞控件

预览效果目录图片类:LikeImageView文字类:LikeCharTextView整合类:LikeView.java代码LikeCharTextViewpublic class LikeCharTextView extends View { public static final int DEFAULT_TEXTCOLOR = Color.BLACK; ...

2019-11-10 22:54:31 144 2

原创 FFmpeg视频的旋转rotate升级版,rotate,alphamerge

给视频加上Mask后,旋转,并叠加在另一个视频上方案一:有黑底ffmpeg -loop 1 -i 圆形.png -i maskBase.mp4 -i a3.mp4 -filter_complex [0:v]alphaextract[vMaskAlpha];[1:v][vMaskAlpha]alphamerge[vTop];[vTop]rotate=PI*2/10*t[vRotate];[2:...

2019-11-10 11:10:17 319

原创 ffmpeg实例,为视频设置透明度的几种方案

预期效果方案一:推荐ffmpeg -i a2.mp4 -i a3.mp4 -filter_complex [0:v]format=yuva444p,colorchannelmixer=aa=0.5[valpha];[1:v][valpha]overlay=(W-w)/2:(H-h)/2 -ss 0 -t 5 -y overlay4.mp4方案二:对图片有效,经过测试ffmpeg -...

2019-11-10 11:09:17 2542 1

移动架构师成长路线.xmind

移动架构师成长路线.xmind

2021-08-24

空空如也

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

TA关注的人

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