自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(3969)
  • 资源 (258)
  • 收藏
  • 关注

原创 【FFmpeg】视频裁剪与拼接命令 ( 裁剪视频命令 | h264 编码的 SPS 和 PPS 数据 | 拼接视频 - 相同编码和相同容器格式的拼接 | 拼接视频 - 不同编码和容器格式的拼接测试 )

一、裁剪视频1、裁剪视频命令2、h264 编码的 SPS 和 PPS 数据3、将裁剪的视频转为 ts 格式4、将裁剪的视频转为 flv 格式二、拼接视频 - 相同编码和相同容器格式的拼接测试1、拼接视频命令 - mp4 格式直接使用命令拼接 mp4 视频 - 拼接失败指定文件列表拼接 mp4 视频 - 拼接成功但是播放不正常2、拼接视频命令 - ts 格式直接使用命令拼接 ts 视频 - 拼接成功指定文件列表拼接 ts 视频 - 拼接成功3、拼接视频命令 - flv 格式

2024-04-17 21:00:20 586 2

原创 【副业随笔】副业起步认知 ① ( 副业 -> 创业的成长阶段 | 副业项目认知 | 赚钱项目知识付费的本质 | 可拆解项目 - 招人扩大规模 | 不可拆解项目 - 闷声发大财 )

一、副业 -> 创业的成长阶段二、副业项目认知1、赚钱项目知识付费的本质2、可拆解项目 - 招人扩大规模3、不可拆解项目 - 闷声发大财

2024-04-16 19:45:00 1114 10

原创 【错误记录】Kotlin 中 Lambda 表达式返回值报错 ( ‘return‘ is not allowed here | 匿名内部类 | 尾随 Lambda 规范 - Lambda 替换接口 )

一、错误记录二、问题分析1、匿名内部类2、尾随 Lambda 规范 - Lambda 替换接口3、Lambda 表达式中 return 需要 @ 标签三、解决方案

2024-04-15 16:28:38 1033 12

原创 【JavaScript】对象 ③ ( 使用 new Object 创建对象 | 使用 构造函数 创建对象 | 构造函数语法 | 使用 字面量 和 new Object 创建对象的方法弊端 )

一、使用 new Object 创建对象1、使用 new Object 创建对象语法2、代码示例 - 使用 new Object 创建对象二、使用 构造函数 创建对象1、字面量 和 new Object 创建对象的方法弊端2、构造函数引入3、构造函数语法4、代码示例 - 构造函数语法

2024-04-15 12:21:04 763 1

原创 【错误记录】Android 使用 Navigation 报错 ( Trying to instantiate a class xx.NavHostFragment that is not a Fr )

Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class androidx.navigation.fragment.NavHostFragment that is not a Fragment

2024-04-14 15:26:50 455 10

原创 【错误记录】Android 编译报错 ( Attempt to invoke virtual method ‘void xx.ActionBar.setTitle()‘ on a null obj )

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.appcompat.app.ActionBar.setTitle(java.lang.CharSequence)' on a null object reference一、报错信息二、问题分析三、解决方案1、配置有标题的主题 - Theme.AppCompat.Light.DarkActionBar2、不关联

2024-04-14 13:39:08 694 2

原创 【错误记录】Android Studio 调试 华为手机 不显示 Logcat 日志 ( Fail to acquire dataAnalyzerService | HarmonyOS 鸿蒙系统 )

E/BehaviorCollectManager: Fail to acquire dataAnalyzerService...E/Adreno-AppProfiles: Could not find QSPM HAL serviceE/OpenGLRenderer: Unable to match the desired swap behavior.

2024-04-14 10:18:27 425 4

原创 【错误记录】Android 编译报错 ( Could not resolve xxx | 手动下载依赖库并进行本地配置 Gradle 依赖的解决方案 | 构建 Maven 依赖下载路径 )

一、报错信息二、解决方案1、确定 Maven 仓库地址2、构建 Maven 依赖下载路径3、检查依赖库是否存在4、在 Gradle 中配置本地依赖

2024-04-13 18:04:12 5089 8

原创 【错误记录】Android 编译报错 ( Could not resolve com.google.android.exoplayer:exoplayer:r | 依赖下载失败通用解决方案总结 )

一、报错信息二、解决方案1、检查依赖库是否存在2、检查版本号是否正确3、检查仓库地址配置 ( 本案例的解决方案 )4、检查网络5、手动下载 Gradle 依赖

2024-04-13 16:58:12 876

原创 【JavaScript】对象 ② ( 对象使用 | 调用对象属性 | 调用对象方法 | 变量与属性区别 | 函数与方法区别 )

一、对象使用1、使用字面量创建对象要点2、调用对象属性3、调用对象方法二、变量与属性区别三、函数与方法区别

2024-04-11 23:46:09 1218 8

原创 【JavaScript】对象 ① ( 对象概念 | 对象使用场景 | 使用字面量创建对象 | 空对象字面量 | 小括号 / 中括号 / 大括号 作用 )

一、JavaScript 对象1、对象概念2、对象使用场景二、使用字面量创建对象1、使用字面量创建对象2、小括号 / 中括号 / 大括号 作用3、代码示例 - 使用字面量创建对象4、代码示例 - 使用字面量创建空对象

2024-04-11 19:30:00 903 2

原创 【错误记录】adb 调试 android 设备报错 ( adb server version (32) doesn‘t match this client (41); killing... )

adb server version (32) doesn't match this client (41); killing...could not read ok from ADB Server* failed to start daemonadb.exe: failed to check server version: cannot connect to daemon

2024-04-10 18:14:54 1565 13

原创 【错误记录】启动 Java 程序报错 ( Could not reserve enough space for 2097152KB object heap )

一、报错信息二、报错分析1、参数分析2、报错信息分析3、最大堆内存的影响因素4、电脑配置分析5、操作系统限制 - 32 / 64 位操作系统单个程序可用内存6、Java 虚拟机限制三、解决方案

2024-04-10 11:07:57 959 4

原创 【错误记录】运行 Java 程序报错 ( Exception in thread “Image Fetch“ java.lang.OutOfMemoryError: Java heap space )

一、报错信息二、错误分析三、解决方案 - 针对内存不足问题四、解决方案 - 针对内存泄漏

2024-04-09 10:52:31 837 5

原创 【JavaScript】预解析 ② ( 预解析示例分析 | 分步骤分析预解析过程 )

一、预解析示例分析一1、要分析的代码2、代码预解析分析3、作用域链分析二、预解析示例分析二1、要分析的代码2、代码预解析分析三、预解析示例分析三1、要分析的代码2、预解析过程分析

2024-04-09 01:15:00 4137 5

原创 【JavaScript】预解析 ① ( 变量预解析 - 变量提升 | 函数预解析 - 函数提升 | 函数表达式预解析 )

一、JavaScript 预解析二、变量预解析1、变量预解析 - 变量提升2、代码示例 - 变量预解析三、函数预解析1、函数预解析 - 函数提升2、代码示例 - 函数预解析四、函数表达式预解析1、函数表达式预解析2、代码示例 - 函数表达式预解析

2024-04-08 21:00:00 775 1

原创 【错误记录】启动 VSCode 报错 ( 系统错误 : 由于找不到 ffmpeg.dll ,无法继续执行代码 ; 重新安装程序可能会解决此问题 )

一、报错信息二、解决方案一 - 使用修复工具修复 DLL ( 失败 - 仅做参考 )三、解决方案二 - 尝试手动下载 DLL 放到指定目录 ( 失败 - 仅做参考 )四、解决方案三 - 重装 VSCode 软件

2024-04-08 19:02:03 1296

原创 【JavaScript】作用域 ③ ( JavaScript 作用域链 | 作用域链变量查找机制 )

一、JavaScript 作用域链1、作用域2、作用域链3、作用域链变量查找机制二、代码示例 - 作用域链

2024-04-07 22:18:47 860 9

原创 【JavaScript】作用域 ② ( JavaScript 块级作用域 | ES6 之前 等同于 全局/局部作用域 | ES6 使用 let / const 声明变量 / 常量 有 块级作用域 )

一、JavaScript 块级作用域1、块级作用域 - ES6 之前 等同于 全局作用域2、块级作用域 - ES6 使用 let / const 声明变量 / 常量3、代码示例 - ES6 之前的块级作用域 = 全局作用域4、代码示例 - ES6 之后的块级作用域

2024-04-07 20:45:00 929 1

原创 【FFmpeg】在 Mac OS 中编译 FFmpeg 源码 ① ( homebrew 安装 | 通过 gitee 源安装 homebrew | 安装 FFmpeg 编译所需的软件包 )

一、homebrew 安装1、homebrew 简介2、通过 gitee 源安装 homebrew二、安装 FFmpeg 编译所需的软件包1、编译 FFmpeg 源码需要安装的软件包2、使用 homebrew 安装软件包命令

2024-04-06 20:17:14 1326 10

原创 【JavaScript】作用域 ① ( JavaScript 作用域 | 全局作用域 | 局部作用域 | JavaScript 变量 | 全局变量 | 局部变量 )

一、JavaScript 作用域1、作用域概念2、全局作用域 和 局部作用域二、JavaScript 变量1、全局变量 和 局部变量2、全局变量 和 局部变量 生命周期3、代码示例 - 全局变量4、代码示例 - 局部变量

2024-04-05 22:16:15 802 5

原创 【开发环境】Mac 安装 Visual Studio Code ② ( 装 C/C++ 扩展 | 安装配置 Code Runner 扩展插件 | 运行 C 语言程序 )

一、Visual Studio Code 简介1、安装 C/C++ 扩展3、安装 Code Runner 扩展插件4、配置 Code Runner 扩展插件5、准备 C 语言程序6、处理 C 语言程序头文件报错问题7、运行 C 语言程序8、查看 Mac clang 编译器版本

2024-04-05 14:24:04 845 2

原创 【JavaScript】函数 ⑦ ( 函数定义方法 | 命名函数 | 函数表达式 )

一、函数定义方法1、命名函数2、函数表达式3、函数表达式示例

2024-04-04 22:47:40 664 2

原创 【开发环境】Mac 安装 Visual Studio Code ① ( VSCode 简介 | 下载 VSCode | 安装 VSCode | 安装中文语言包 )

一、Visual Studio Code 简介二、MAC 安装 Visual Studio Code1、下载 Visual Studio Code2、安装 Visual Studio Code3、安装中文语言包4、编辑 html 并运行

2024-04-04 22:29:08 1189 5

原创 【JavaScript】函数 ⑥ ( 使用 arguments 获取所有实参 | arguments 内置对象 | 伪数组概念 )

一、使用 arguments 获取所有实参1、arguments 内置对象2、伪数组概念3、arguments 实参遍历4、arguments 代码示例 - 基本使用5、arguments 代码示例 - 遍历实参

2024-04-03 22:45:00 1974 6

原创 【JavaScript】函数 ⑤ ( return 关键字终止函数 | return 关键字返回一个值 | return 关键字返回多个值 - 返回数组对象 )

一、JavaScript 函数返回值1、return 关键字终止函数2、return 关键字返回一个值3、return 关键字返回多个值 - 返回数组对象

2024-04-03 21:45:00 940 1

原创 【JavaScript】函数 ④ ( 函数返回值 | 函数返回值语法 return 关键字 | 函数默认返回值 undefined )

一、JavaScript 函数返回值1、函数返回值引入2、函数返回值语法3、函数默认返回值4、函数默认返回值

2024-04-02 21:05:23 836 8

原创 【JavaScript】函数 ③ ( 形参 与 实参 匹配问题 | 实参个数 = 形参个数 | 实参个数 > 形参个数 | 实参个数 < 形参个数 )

一、JavaScript 函数 形参 与 实参 匹配问题1、函数形参与实参不匹配问题2、形参与实参个数匹配3、实参个数 > 形参个数4、实参个数 < 形参个数5、完整代码示例

2024-04-02 20:21:29 824

原创 【FFmpeg】ffmpeg 命令行参数 ⑧ ( 使用 ffmpeg 转换封装格式 | 音视频编解码器参数设置 | 视频 帧率 / 码率 / 分辨率 设置 | 音频 码率 / 采样率 设置 )

一、音视频封装过程二、保持编码格式转封装1、设置音视频编解码器参数2、设置音视频编解码器参数 - 使用 vcodec / acodec 参数3、设置音视频编解码器参数 - 使用 codec 参数三、改变编码格式转封装 - 重新进行编码1、设置音视频编解码器参数 - 使用 vcodec / acodec 参数2、使用 ffprobe 查看视频封装信息3、查询可用的音视频编解码器四、改变 封装格式 的 视频 帧率 / 码率 / 分辨率1、修改视频帧率2、修改视频码率3、修改视频分辨率

2024-04-01 20:19:25 6514 20

原创 【JavaScript】函数 ② ( 函数参数 | 形式参数 | 实际参数 )

一、JavaScript 函数参数1、形式参数2、实际参数3、代码示例 - 形参和实参

2024-04-01 03:15:00 1114 5

原创 【JavaScript】函数 ① ( 函数引入 | 函数声明 | 函数调用 )

一、JavaScript 函数1、函数引入2、函数声明3、函数调用4、代码示例 - 函数声明调用

2024-03-31 19:50:38 599 5

原创 【FFmpeg】ffmpeg 命令行参数 ⑦ ( 使用 FFmpeg 提取 PCM 音频数据 | PCM 音频格式 | 提取 PCM 音频格式常用参数 | 查询文档方法 )

一、使用 FFmpeg 提取 PCM 音频数据1、PCM 音频格式2、提取 PCM 音频格式常用参数3、提取 PCM 音频数据 - 使用 -f 参数4、提取 PCM 音频数据 - 使用 -sample_fmt 参数5、提取 PCM 音频数据 - 使用 -codec:a 参数二、查询文档方法1、PCM 采样位数查询2、-sample_fmts 参数值 查询

2024-03-31 02:15:00 1664 7

原创 【JavaScript】数组 ⑤ ( 数组案例 | 创建数组存放 1 - 10 元素 | 数组筛选 | 删除数组元素 | 翻转数组元素 | 数组元素冒泡排序 )

一、JavaScript 数组案例1、创建数组存放 1 - 10 元素2、数组筛选3、数组筛选 24、删除数组元素5、翻转数组元素6、数组元素冒泡排序

2024-03-30 23:37:27 665 4

原创 【JavaScript】数组 ④ ( JavaScript 数组新增元素 | 先修改数组长度再填充元素 | 通过索引值追加数组元素 | 使用 push 函数追加数组元素 )

一、JavaScript 数组新增元素1、先修改数组长度再填充元素2、通过索引值追加数组元素3、使用 push() 函数追加数组元素

2024-03-29 22:41:37 457 9

原创 【JavaScript】数组 ③ ( JavaScript 数组长度 | 修改数组长度 | 数组案例 )

一、JavaScript 数组长度1、数组长度2、修改数组长度二、数组案例1、求数组元素平均值2、求数组元素最大值

2024-03-29 19:39:55 1035 1

原创 【JavaScript】数组 ② ( JavaScript 数组索引 | JavaScript 遍历数组 | 使用 for 循环遍历数组 )

一、JavaScript 数组索引1、数组索引2、数组索引 - 代码示例二、JavaScript 遍历数组1、使用 for 循环遍历数组2、使用 for 循环遍历数组 - 代码示例

2024-03-28 22:23:57 777 8

原创 【FFmpeg】ffmpeg 命令行参数 ⑥ ( 使用 FFmpeg 提取 YUV 像素格式数据 | 使用 FFmpeg 提取 RGB 像素格式数据 | RGB 与 YUV 之间的格式转换 )

一、使用 FFmpeg 提取 YUV 像素格式数据1、YUV 像素格式2、提取 YUV 数据3、提取 YUV 数据 - 设定提取长度和画面大小4、使用 ffplay 播放 YUV 视频二、使用 FFmpeg 提取 RGB 像素格式数据1、提取 RGB 像素格式2、提取 RGB 像素格式 - 设定提取长度和画面大小3、使用 ffplay 播放 RGB 视频三、RGB 与 YUV 之间的格式转换1、设置分辨率与像素格式2、设置分辨率与像素格式 - 同时设置输入 / 输出文件的参数

2024-03-27 23:48:35 4726 16

原创 【JavaScript】数组 ① ( JavaScript 数组概念 | 数组创建 | 使用 new 关键字创建数组 | 使用 数组字面量 创建数组 )

一、JavaScript 数组概念二、数组创建1、使用 new 关键字创建数组2、使用 数组字面量 创建数组

2024-03-27 03:15:00 1096 10

原创 【JavaScript】JavaScript 程序流程控制 ⑧ ( 循环控制关键字 | continue 关键字 | break 关键字 )

一、循环控制关键字 - continue / break1、break 关键字2、continue 关键字

2024-03-26 20:45:00 557 3

原创 【JavaScript】JavaScript 程序流程控制 ⑦ ( do-while 循环概念 | do-while 循环语法结构 )

一、while 循环1、while 循环概念2、do-while 循环语法结构二、do-while 循环代码示例1、打印 1-5 数字2、打印 1-10 累加和

2024-03-26 20:15:00 1018

【移动端网页布局】Flex 弹性布局案例 ③

【移动端网页布局】Flex 弹性布局案例 ③

2024-03-06

GIF录屏工具-Gif123-GifCam-LICEcap

GIF录屏工具-Gif123-GifCam-LICEcap

2024-03-04

Java 语言中的 properties 配置文件使用

【Java 语言】读取 properties 配置文件 ( Java 语言中的 properties 配置文件 | 使用 properties 配置文件 ) https://hanshuliang.blog.csdn.net/article/details/134435350 博客源码

2023-11-16

JetpackNavigation 导航组件 ④ ( Fragment 跳转中使用 safe args 安全传递参数 )

https://hanshuliang.blog.csdn.net/article/details/131406972 博客源码快照 一、页面跳转间的传统的数据传递方式 1、传统的数据传递方式 - Bundle 传递数据 1、Navigation 组件中的 Bundle 数据传递 2、传统数据传递实现步骤 3、FragmentA 完整代码示例 4、FragmentB 完整代码示例 5、执行结果 2、使用 Bundle 传递数据安全性差 二、页面跳转间的传统的数据传递方式 1、导入插件依赖 2、使用插件 3、在 navigation_graph.xml 中定义要传递的 argument 参数信息 4、重新编译生成参数传递相关代码 5、调用 FragmentBArgs 类生成参数 Bundle 6、FragmentA 中获取参数 三、两种传参方式的完整代码示例 1、Gradle 构建脚本 I、根目录下 settings.gradle 构建脚本 II、根目录下 build.gradle 构建脚本 III、Module 目录下 build.gradle 构建脚本 2、res 资源配置

2023-08-25

可运行的 Android 版本的 ijkplayer 2023年 8 月 14 日调试完毕

运行环境 : 2021.3.1 Dolphin , Android Gradle 插件版本号 3.2.0 , Gradle 版本号 gradle-4.6-all.zip 【ijkplayer】编译 Android 版本的 ijkplayer ⑦ ( 使用 AS 打开源码 | 重新设置 AGP 和 Gradle 版本号 | 设置依赖仓库 | 设置依赖 | 编译运行 ) 原文链接:https://blog.csdn.net/shulianghan/article/details/132274142 一、Android Studio 打开编译后的 ijkplayer 源码 二、重新设置 Android Gradle 插件版本号和 Gradle 构建工具版本号 三、设置依赖仓库 1、取消 jcenter 仓库 2、添加 google 和 mavenCentral 仓库 3、添加阿里云仓库 四、取消 jcenter 上传相关插件 五、设置编译工具版本号 六、取消 productFlavors 七、设置 build.gradle 中的依赖为 implementation 依赖 八、编译应用

2023-08-14

hadoop-3.3.4.tar.gz + winutils 安装环境

【开发环境】安装 Hadoop 运行环境 ( 下载 Hadoop | 解压 Hadoop | 设置 Hadoop 环境变量 | 配置 Hadoop 环境脚本 | 安装 winutils ) https://hanshuliang.blog.csdn.net/article/details/132045605 一、下载 Hadoop 二、解压 Hadoop 三、设置 Hadoop 环境变量 四、配置 Hadoop 环境脚本 五、安装 winutils 六、重启电脑 七、验证 Hadoop 安装效果

2023-08-03

JetpackNavigation 导航组件 ③ ( 为 Navigation Graph 添加跳转动画 )

【Jetpack】Navigation 导航组件 ③ ( 为 Navigation Graph 添加跳转动画 ) 博客源码快照 博客地址 : https://hanshuliang.blog.csdn.net/article/details/131405392 一、为 Navigation Graph 添加跳转动画 1、进入 Navigation Graph 配置的 Design 模式 2、选中 action 跳转 3、为 action 跳转设置 enterAnim 进入动画 4、为 action 跳转设置 exitAnim 退出动画 5、通过代码为 action 跳转设置进入 / 退出动画

2023-06-26

JetpackNavigation 导航组件 ②

【Jetpack】Navigation 导航组件 ② ( Navigation 核心要点说明 | 创建 Navigation Graph | 创建 NavHostFragment | 完整代码示例 ) https://hanshuliang.blog.csdn.net/article/details/131299078

2023-06-21

DB Browser for SQLite 数据库查看工具

DB Browser for SQLite 数据库查看工具

2023-06-14

ViewModel + LiveData + DataBinding 综合使用示例

【Jetpack】ViewModel + LiveData + DataBinding 综合使用 ( 核心要点说明 | 组合方式 | 代码示例 ) 博客地址 : https://hanshuliang.blog.csdn.net/article/details/130401679 一、ViewModel + LiveData + DataBinding 核心要点 1、ViewModel 使用要点 2、LiveData 使用要点 3、DataBinding 使用要点 二、ViewModel + LiveData + DataBinding 代码示例 1、ViewModel + LiveData 代码 2、build.gradle 构建脚本 - 启用 DataBinding 3、DataBinding 布局文件 - 配置 ViewModel 类 4、Activity 系统组件代码 - 加载 DataBinding 布局 / 布局配置 ViewModel 对象 / 设置 LiveData 观察者 5、执行结果

2023-04-27

BaseObservable 实现数据模型 Model 与视图 View 双向绑定

BaseObservable 实现数据模型 Model 与视图 View 双向绑定

2023-04-18

DataBinding 架构组件 ④

【Jetpack】DataBinding 架构组件 ④ ( 使用 @BindingAdapter 注解为布局组件绑定自定义逻辑 | 网络图片加载 | 本地图片加载 ) https://blog.csdn.net/shulianghan/article/details/130043460 一、@BindingAdapter 注解 1、注解简介 2、使用 @BindingAdapter 注解为布局组件绑定自定义逻辑 二、使用 @BindingAdapter 注解绑定加载网络图片静态方法 三、使用 @BindingAdapter 注解绑定加载本地图片静态方法 四、使用 @BindingAdapter 注解绑定加载网络图片或本地图片静态方法 五、完整代码示例 1、build.gradle 构建脚本 2、AndroidManifest.xml 清单文件 3、DataBinding 布局文件 4、BindingAdapter 注解类 5、MainActivity 组件 6、执行结果

2023-04-18

DataBinding 架构组件 ③

【Jetpack】DataBinding 架构组件 ③ ( 使用 include 导入二级界面布局 | 二级页面绑定数据模型 ) https://hanshuliang.blog.csdn.net/article/details/129899735 一、使用 include 导入二级界面布局 二、二级页面绑定数据模型 1、将二级界面布局转为 DataBinding 布局 2、在主布局中为二级界面布局传递数据模型 三、核心代码示例 1、主布局 2、子布局 3、Java 代码 4、执行结果

2023-04-04

DataBinding 架构组件 ② - DataBinding 布局中使用 import 标签导入 Java、Kotlin 类

【Jetpack】DataBinding 架构组件 ② ( 字符串拼接函数 | 绑定点击事件函数 | DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 ) https://hanshuliang.blog.csdn.net/article/details/129773150 一、字符串拼接函数 二、绑定点击事件函数 三、DataBinding 布局中使用 import 标签导入 Java、Kotlin 类 1、DataBinding 布局中使用 import 标签导入 Java 类 2、DataBinding 布局中使用 import 标签导入 Kotlin 类 四、完整代码示例 1、数据类 2、导入的 Java 类 3、导入的 Kotlin 类 4、DataBinding 布局文件 5、Activity 组件类

2023-03-26

DataBinding 架构组件

【Jetpack】DataBinding 架构组件 ( 数据绑定技术简介 | Android 中的 DataBinding 数据绑定 | 启动数据绑定 | 定义数据类 | 布局文件转换 ) https://hanshuliang.blog.csdn.net/article/details/129762717 博客源码快照 一、数据绑定技术简介 二、Android 中的 DataBinding 数据绑定技术 三、Android 中的 DataBinding 代码示例 1、build.gradle 构建脚本 - 启动数据绑定 2、定义数据类 3、布局文件转换 4、Activity 组件设置数据绑定布局和数据 5、显示效果 ———————————————— 版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shulianghan/article/details/129762717

2023-03-25

JetpackLiveData 架构组件

【Jetpack】LiveData 架构组件 ( LiveData 简介 | LiveData 使用方法 | ViewModel + LiveData 示例 ) https://hanshuliang.blog.csdn.net/article/details/129411132 博客源码示例 一、LiveData 简介 二、LiveData 使用方法 三、ViewModel + LiveData 简单示例 1、ViewModel + LiveData 代码 2、Activity 组件代码 3、运行效果展示 四、ViewModel + LiveData + Fragment 通信示例 1、ViewModel + LiveData 代码 2、Activity 组件代码 Activity 代码 布局文件 3、Fragment 代码 第一个 Fragment 代码 第一个 Fragment 布局文件 第二个 Fragment 代码 第二个 Fragment 布局文件 4、运行效果展示

2023-03-12

JetpackViewModel 架构组件 博客源码

【Jetpack】ViewModel 架构组件 ( 视图 View 和 数据模型 Model | ViewModel 作用 | ViewModel 生命周期 | 代码示例 | 使用注意事项 ) https://hanshuliang.blog.csdn.net/article/details/129374914 一、Activity 遇到的问题 二、视图 View 和 数据模型 Model 三、ViewModel 架构组件作用 四、ViewModel 代码示例 1、ViewModel 视图模型 2、Activity 组件 3、UI 布局文件 4、运行效果 五、ViewModel 生命周期 六、ViewModel 使用注意事项 ———————————————— 版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/shulianghan/article/details/129374914

2023-03-07

博客资料 -JetpackLifeCycle 架构组件

【Jetpack】Lifecycle 架构组件 ( 系统组件与普通组件解耦 | Lifecycle 解耦系统组件与普通组件 | 解耦服务组件与普通组件 | 监听应用程序生命周期 ) https://hanshuliang.blog.csdn.net/article/details/129291874 一、系统组件与普通组件解耦 二、Lifecycle 解耦 Activity 系统组件与 UI 组件 1、传统实现方式 ① Activity 系统组件 ② 布局文件 ③ 执行效果 2、LifeCycle 实现方式 ① 自定义 UI 组件 ② Activity 系统组件 ③ 布局组件 ④ 执行效果 三、LifecycleService 解耦 Service 与 UI 组件 1、构建脚本导入依赖 2、Android Studio 中搜索并添加依赖 3、布局文件属性排序 4、代码实现 ① LifecycleService 组件 ② LifecycleObserver 业务逻辑 ③ AndroidManifest.xml 清单文件 ④ Activity 系统组件

2023-03-03

使用 Jedis 操作 Redis 数据库 博客代码示例

【Redis】使用 Jedis 操作 Redis 数据库 ② ( Jedis API 规律 | Redis 命令与 Jedis 函数名称基本一致 | Jedis API 使用示例 ) https://hanshuliang.blog.csdn.net/article/details/129128393 博客代码示例

2023-02-20

Redis 数据库 安装、配置、访问资源

【Redis】Redis 数据库 安装、配置、访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 Redis 数据库 | 命令行访问 Redis | 使用可视化工具访问 Redis ) https://hanshuliang.blog.csdn.net/article/details/128945441 博客资源快照 001_Linux安装包 002_Windows安装包 003_可视化工具_Redis Desktop Manager

2023-02-09

开发环境JRE 裁剪 ② ( 裁剪 bin 目录下的 dll 动态库文件 - 压缩 rt.jar 文件 )

【开发环境】JRE 裁剪 ② ( 裁剪 bin 目录下的 dll 动态库文件 | 压缩 rt.jar 文件 ) https://blog.csdn.net/shulianghan/article/details/128711836 博客资源快照

2023-01-17

开发环境JRE 裁剪 ① ( 裁剪 bin 目录下的 dll 动态库文件 )

【开发环境】JRE 裁剪 ① ( 裁剪 bin 目录下的 dll 动态库文件 ) https://hanshuliang.blog.csdn.net/article/details/128703546 资源快照

2023-01-16

【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ③ 源码快照

【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ③ ( CMake 工程中配置 OpenCV 库文件 | 拷贝 OpenCV 函数库文件 ) https://hanshuliang.blog.csdn.net/article/details/128516414 源码快照 在 Visual Studio 2019 中打开 ; 需要修改 Windows 平台的 OpenCV 函数库 头文件 及 库文件搜索路径 ;

2023-01-02

【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ① 博客资源

【Android OpenCV】Visual Studio 创建支持 OpenCV 库的 CMake 工程 ① ( 下载 OpenCV 库 | Windows 中安装 OpenCV 库 ) https://hanshuliang.blog.csdn.net/article/details/128515811 博客资源 一、下载 OpenCV 库、 二、Windows 中安装 OpenCV 库

2023-01-02

【Kotlin 协程】协程启动 ② ( 多协程控制 )

【Kotlin 协程】协程启动 ② ( 多协程控制 | launch 协程执行顺序控制 | Job#join() 函数 | async 协程执行顺序控制 | Deferred#await() 函数 ) https://blog.csdn.net/shulianghan/article/details/128071482 博客源码快照

2022-11-27

【Kotlin 协程】协程启动 ① ( 协程构建器 ) 代码示例

【Kotlin 协程】协程启动 ① ( 协程构建器 | launch 构建器 | async 构建器 | runBlocking 函数 | Deferred 类 ) https://hanshuliang.blog.csdn.net/article/details/128058948 博客代码快照

2022-11-27

【Kotlin 协程】协程底层实现 ④ ( 结构化并发 - viewModelScope 作用域示例 )

【Kotlin 协程】协程底层实现 ④ ( 结构化并发 | viewModelScope 作用域示例 ) 博客 https://hanshuliang.blog.csdn.net/article/details/128055880 源码

2022-11-26

Android图片优化工具cwebp、guetzli、pngcrush

Android图片优化工具cwebp、guetzli、pngcrush

2022-10-21

Sonatype Nexus Maven 仓库管理工具

【Android Gradle 插件】将自定义 Gradle 插件上传到自建 Maven 仓库 ⑤ ( 使用 Sonatype Nexus 搭建 Maven 仓库 ) https://hanshuliang.blog.csdn.net/article/details/127385094 博客资源

2022-10-18

Android LinearGradient 线性渐变渲染

【Android UI】Paint Gradient 渐变渲染 ① ( LinearGradient 线性渐变渲染 | 设置渲染方向 | 设置渲染颜色 | 设置渲染模式 | MIRROR ) https://blog.csdn.net/shulianghan/article/details/125047457 博客配套源码 一、LinearGradient 线性渐变渲染 1、设置 2 个颜色的渐变 3、设置多个颜色的渐变 二、LinearGradient 线性渐变渲染重要参数分析 1、正常渲染 2、设置多个渐变颜色渲染 3、设置渲染方向 4、设置 Shader.TileMode.MIRROR 渲染模式 5、设置 Shader.TileMode.REPEAT 渲染模式 三、代码示例 1、正常渲染 2、设置多个渐变颜色渲染 3、设置渲染方向 4、设置 Shader.TileMode.MIRROR 渲染模式 5、设置 Shader.TileMode.REPEAT 渲染模式 四、效果展示 ———————————————— 版权声明:本文为CSDN博主「韩曙亮」的原创文章,遵循CC 4.0

2022-05-30

集成 mobile-ffmpeg 框架执行 FFmpeg 指令 ( 兼容 Android 10 )

【Android FFMPEG 开发】Android 中执行 FFMPEG 指令 ( 集成 mobile-ffmpeg 框架 | 完整代码示例 ) https://hanshuliang.blog.csdn.net/article/details/123731092 博客源码 一、配置远程 Maven 仓库 二、配置依赖 三、Kotlin 中执行 FFmpeg 命令 四、FFmpeg 命令执行结果查看 五、源码下载

2022-03-25

Android WebSocket 用法 ( 导入 Java-WebSocket 源码依赖 )

【Android WebSocket】Android 端 WebSocket 基本用法 ( 下载 Java-WebSocket源码 | 导入 Java-WebSocket-1.5.2 工程作为依赖 ) https://hanshuliang.blog.csdn.net/article/details/123633108 博客源码快照

2022-03-21

Android 端 WebSocket 简单 Demo

【Android WebSocket】Android 端 WebSocket 基本用法 ( 添加依赖和权限 | 创建 WebSocketClient 客户端类 | 建立连接并发送消息 ) https://hanshuliang.blog.csdn.net/article/details/123628775 博客配套源码

2022-03-21

ijkplayer 编译后的工程 0.88 版本

ijkplayer 编译后的工程 0.88 版本 ; https://blog.csdn.net/shulianghan/category_11697316.html 专栏配套源码

2022-03-20

ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性

【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 ) https://hanshuliang.blog.csdn.net/article/details/122815793 博客源码

2022-02-07

启动 DEX 字节码中的 Activity 组件 ( 替换 LoadedApk 中的类加载器 )

【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 替换 LoadedApk 中的类加载器 | 加载 DEX 文件中的 Activity 类并启动成功 ) https://hanshuliang.blog.csdn.net/article/details/121885164

2021-12-12

使用 DexClassLoader 动态加载字节码文件

【Android 逆向】类加载器 ClassLoader ( 使用 DexClassLoader 动态加载字节码文件 | 准备 DEX 字节码文件 ) https://hanshuliang.blog.csdn.net/article/details/121776627 博客源码

2021-12-10

CheatEngine7.3版本工具及源码

CheatEngine73.exe 工具 , cheat-engine-7.3.zip 源码 ;

2021-11-12

MobileGameModify.7z

【Android 逆向】Android 逆向通用工具开发 ( Android 端远程命令工具 | Android 端可执行程序的 main 函数操作 | TCP 协议服务器建立 | 接收客户端数据 ) https://hanshuliang.blog.csdn.net/article/details/121205714 博客源码 , 带最终版的可执行程序和依赖库

2021-11-08

MobileGameModify.7z

【Android 逆向】Android 逆向通用工具开发 ( PC 端工程分析 | 网络初始化操作 | PC 端工程核心业务逻辑 ) https://hanshuliang.blog.csdn.net/article/details/121203401 博客源码快照

2021-11-08

空空如也

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

TA关注的人

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