自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(106)
  • 问答 (2)
  • 收藏
  • 关注

原创 执行curl时报“tlsv1 alert protocol version”问题的解决方案

curl: (35) error:1404B42E:SSL routines:ST_CONNECT:tlsv1 alert protocol version

2023-02-21 11:53:16 8840 1

原创 Git LFS报错“Git LFS is not installed”

Skipping object checkout, Git LFS is not installed.

2022-08-16 10:47:56 4531 2

原创 自定义Android截屏命令

一、 背景在日常开发中,我们有时需要对手机截屏,并拷出到电脑中,常规的做法有这些:手机截屏,通过adb命令或IDE的文件管理,将截图文件拷贝到电脑手机截屏,通过即时通讯软件发送到电脑上的客户端本文的目的,便是解决以上繁琐的流程,只需要一个命令,便完成截图、拷贝两件事。二、 方案1. 实现shell脚本这里以我个人的Mac为例:创建一个名为Custom的文件夹,统一存放自定义脚本,以便今后新增文件mkdir /Applications/Custom创建一个名为cap.sh的

2021-08-05 16:48:02 1162

原创 企鹅电竞VAP动画组件停留最后一帧画面

一、 简介VAP(Video Animation Player)是企鹅电竞开发的一款用于播放视频动画的组件库,其开源于:腾讯工蜂:https://git.code.tencent.com/Tencent_Open_Source/vapGithub:https://github.com/Tencent/vap二、 问题现状VAP播放动画采用的TextureView方式来提供Surface展示画面,在播放视频结束后,会清空动画画面,如果我们有需求需要让动画停留在画面最后一帧,当前是不支持的,跟V

2021-05-17 18:50:24 2284 1

原创 基于GLSurfaceView的视频播放器偶现无画面的问题分析

文章目录一、 问题背景二、 逐步排查2.1 增加log,复现问题2.2 查看ijkplayer源码2.3 查看AOSP源码三、 分析原因3.1 Renderer回调onSurfaceCreated3.2 Player回调onPrepared3.3 总结四、 解决方案4.1 串行4.2 并行五、 反思总结一、 问题背景博主所在项目中,涉及到视频动画播放功能,其实现方案采用的是bilibili开源项目ijkplayer播放器+GLSurfaceView+自定义渲染器:ijkplayer提供视频解码能力,

2021-04-28 21:05:09 2362

原创 Android O之前Animator的isRunning判断错误的问题

又是SDK的坑。

2021-04-20 19:44:50 1354

原创 Android M之前View实例化时报访问成员变量空指针的问题

写了四年安卓,我发现我根本不懂Java。

2021-04-20 19:42:33 1073

原创 Android手势拦补点

一、 前言在Android日常开发中,我们时有处理业务中手势的需求,即:基于事件的拦截、分发、消费三个回调,判断手势逻辑。我们知道,当一个View消费了ACTION_DOWN事件,才可以接受到后续的事件,反之无法收到后续事件。那么如果一个View消费了事件后,判断为自己不需要的事件,又想将事件重新传递给子View处理怎么办呢?这就引出了本文的要点——手势拦补点操作,以Android Q为例,进行介绍。二、 拦点1. 什么是拦点拦点,即拦截触摸事件点位,不让事件向下传递。这并非我们常规的onIn

2021-01-28 09:44:28 1276

原创 TextView自定义长按菜单

一、 实现方式安卓原生的长按菜单,支持自定义菜单内容及事件,只需要两步设置便可快速实现:val tvDemo: TextView// 设置为可选中的,其内部会让控件支持长按tvDemo.setTextIsSelectable(true)tvDemo.customSelectionActionModeCallback = object : ActionMode.Callback { override fun onCreateActionMode(mode: ActionMode?, menu

2020-12-24 11:32:29 2283

原创 程序猿是怎么找对象的

本文讲述程序猿通过研究相亲平台学习计算机网络的故事。

2020-08-30 00:54:30 1854

原创 Vue.js+Github打造个人网站GithubPages

本文介绍如何使用Vue.js开发一个独一无二的GithubPages。

2020-08-22 11:17:50 4604

原创 使用Git Hook配置提交模板

在开发中,为了规范化提交信息,以便追溯修改和理解修改内容,通常会采用统一的提交信息模板来约束开发人员。因此可以通过配置git,来提升便利性。

2020-08-16 02:19:39 3037

原创 OpenGL OOM的解决方案

本文介绍使用OpenGL后引起OOM的一些解决方案。

2020-07-24 22:08:45 7570 1

原创 漫谈对工作的看法

天下没有不散的宴席,时隔一年,又要离开熟悉的团队熟悉的人,为自己的职业生涯奔波离去。

2020-06-09 23:07:08 1340

原创 AOSP升级codebase疑难总结

本文讲述笔者在升级codebase时遇到的一些疑难问题和解决思路。

2020-04-04 19:20:24 1323

原创 AOSP解耦独立应用总结

本文基于Android Q,介绍将AOSP中的仓库解耦为独立应用时的一些疑难点。

2020-03-30 08:43:45 1508

原创 Android动态快捷方式兼容性问题

本文基于Android Q,通过介绍笔者工作中翻过的一次车,讲述Android中的动态快捷方式兼容性处理注意事项。

2020-03-30 08:35:05 1075

原创 Android多用户原理及流程分析

本文基于Android Q,介绍多用户基本原理和流程。

2020-03-18 16:56:18 4400

原创 浅谈Kotlin入门

前言16年,Kotlin官方正式推出该语言第一版,17年,Google倡导开发者使用其作为Android开发的基本语言。三年过去了,作为Android开发者的我们,大部分还是维持着Java开发。但是,当前的形势容不得开发者们再怠慢,犹豫,就会败北。一、 为什么是Kotlin这还得从一场官司说起。我们知道,JDK早先分为Oracle公司的OracleJDK 和Sun公司的OpenJDK,前...

2020-02-28 11:27:13 1017

原创 Android多用户适配

本文基于Android Q,介绍安卓原生的多用户功能适配相关内容,供开发者学习参考。

2020-01-18 12:10:28 3920

原创 Android性能优化之内存优化——内存泄漏篇

Android性能优化之内存优化——内存泄漏篇一、 简介内存泄露(Memory Leak)简单来说,就是该释放或回收的资源没有主动去释放或回收,导致GC也无法回收,最后永远无法正常回收,造成系统资源浪费。内存泄露会积累放大影响,严重时会导致内存溢出,引起程序卡死崩溃等。和内存泄露有关的常见场景如下:非静态内部类匿名内部类BroadcastReceiverContentObserve...

2020-01-14 23:26:57 1887

原创 Android性能优化之内存优化

本章内容基于Android Q,介绍Android性能优化中的内存优化方面,通过排查、检测、规避和表现等四个方面的讲解,让更多的开发者有能力去改善或设计出更优质的程序。内容大纲包括:内存泄漏篇内存溢出篇内存抖动篇内存检测工具篇内存问题规避篇内存问题表现篇下面将分为以上几节内容进行介绍。...

2020-01-14 23:21:48 133

原创 WindowManager操作View源码分析

本文通过源码分析WindowManager的几个重要的操作View的方法:`addView`,`removeView`,`updateViewLayout`等,以及它们隐含的一些风险项。

2019-10-03 18:04:57 532

原创 Java函数式编程

本文介绍Java 8新特性之一——函数式编程。

2019-10-02 18:22:07 450

原创 RecyclerView使用SpanSizeLookup设置Item占位

本文介绍使用栅栏布局管理器的抽象内部类SpanSizeLookup实现Item占位多行或多列的方法。

2019-08-14 11:46:42 2662

原创 RecyclerView使用ItemDecoration绘制分割线

本文介绍使用RecyclerView的抽象内部类ItemDecoration实现ItemView分割线的绘制。

2019-07-25 16:49:55 2016

原创 基于Gerrit的Git常用命令

本文介绍日常开发中常用的git命令,从初阶到高阶都有,以及相关git、gerrit原理,以提升协同开发效率。

2019-07-16 19:08:30 2524

原创 Android中View的事件分发

一、 摘要介绍Android中View的事件分发流程,以及对事件的消费和拦截。本文基于Android 8.0(Oreo),即API 26。二、 View的事件View有四种基本事件,它们位于MotionEvent中:ACTION_DOWN:按压动作开始的标志,事件中包含这个初始位置。ACTION_UP:按压结束的标志,事件中包含这个结束位置。ACTION_MOVE:按压松开之前的状...

2019-01-16 17:47:51 454 1

原创 Android中View的异步消息

一、 摘要介绍Android中View的异步消息,以及消息传递流程。二、 分析View.post()说起View的异步消息,也就是View.post()这个方法,它常用于在主线程更新UI,我们要搞清楚它的具体实现,先来看看post()的源码(postDelayed()原理相同,因此不再单独讲解):/** * <p>Causes the Runnable to be adde...

2019-01-14 11:34:56 531

原创 Android中View的绘制流程

一、 摘要介绍Android View的绘制流程,引出后续的异步消息、事件分发。二、 ViewRootImpl1. ViewRootImpl是什么在API文档中如此描述ViewRootImpl:/** * The top of a view hierarchy, implementing the needed protocol between View * and the Wind...

2019-01-11 15:21:10 4380 3

原创 Android动态创建快捷方式

一、 摘要以Android O为分界,介绍两种动态创建快捷方式的途径:广播和ShortcutManager。二、 Android O以前在Android O(8.0)以前,动态创建快捷方式是通过发送广播实现的:// 由该action可知,我们的创建快捷方式广播会由launcher,也就是系统桌面来接收public static final String ACTION_INSTALL_S...

2019-01-08 16:51:44 2185

原创 Android进程间通信之AIDL

一、 摘要本文介绍Android中的IPC方式之一——AIDL。二、 关于AIDLAIDL:Android Interface Definition Language,即Android接口定义语言。Android系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Rem...

2019-01-08 15:14:54 363

原创 Android进程间通信之Messenger

一、 摘要本文介绍Android中的IPC方式之一——Messenger。二、 关于MessengerSDK中如此描述:/** * Reference to a Handler, which others can use to send messages to it. * This allows for the implementation of message-based comm...

2019-01-08 11:08:13 255

原创 Queue+FileChannel实现非递归高效率目录拷贝

Queue+FileChannel实现非递归高效率目录拷贝一、 摘要本文介绍非递归目录遍历的实现、FileChannel的使用,从而实现非递归的、安全的目录拷贝。二、 非递归目录遍历 - Queue对于文件夹拷贝,我们常用的目录遍历方式是递归,在一个方法体中调用File.listFiles(),然后对每一个子file再调用该方法体,这样实现起来看似简单,实际上有很大的隐患。当我们的目录...

2019-01-07 15:19:38 269

原创 Vue.js中的路由模式和第三方分享问题

Vue.js中的路由模式和第三方分享问题一、 摘要介绍Vue.js中的两种路由模式:hash和history,并提供第三方分享url问题的解决方案。二、 Router mode1. 关于SPA(Single Page Web Application)单页Web应用(single page web application,SPA),就是只有一张Web页面的应用。单页应用程序 (SPA)...

2019-01-03 10:45:17 1310

原创 Vue.js工程中使用二维码js库的qrcodejs

1. 推荐推荐使用davidshimjs的qrcodejs,可查看作者的API文档。2. 安装注意qrcodejs2和qrcodejs不一样,名字别错了。npm install qrcodejs2 --save3. 导入在需要使用的Vue页面或者js文件中导入:import QRCode from 'qrcodejs2'4. 示例template部分<div i...

2018-12-30 21:01:31 875 2

原创 我能为IT行业做什么

前言今天给一位非IT行业的朋友阐释信息泄露、用户隐私、应用授权和使用协议这几点的关系,之后聊到了Google Play免费应用、Andoid系统开源和iOS系统闭源,过后聊起了开源事业。作为一名Coder,每天使用着开源的Linux、免费的Android Studio,开源的AOSP,还有Java、Git等等,这一切东西作为支撑,给了我就业的资本,我靠着学会使用这些免费的事物来谋生,对于行业内...

2018-12-21 21:35:40 2013

原创 Vue.js工程打包静态网页提示CORS问题的解决方案

一、 问题描述今天打包Vue.js工程,然后用浏览器打开index.html,发现引用的一些UI资源加载不出来,包括字体和icon等,打开控制台提示跨域请求问题。二、 解决方案在原始工程的index.html中,head标签下,增加一个meta标签:<meta http-equiv="Access-Control-Allow-Origin" content="*&q

2018-12-19 18:27:59 4190

原创 adb调试时报"error:insufficient permissions for device"的解决方案

一、 问题日志zengyu@zengyu-Precision-T1700:~/private/master$ adb rooterror: insufficient permissions for device二、 问题原因没有在设备管理器中注册该Android设备。三、 解决方案参考我的另一篇文章:Ubuntu下注册Android设备...

2018-12-06 09:49:19 900

原创 repo拉取仓库时报"Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle"错误的解决方案

一、 问题日志zengyu@zengyu-Precision-T1700:~/private$ repo init -u ssh://zengyu@xxx:123/example/manifest -b branchfatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundlefatal: error [Errn...

2018-12-03 15:34:14 10761 1

空空如也

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

TA关注的人

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