FFmpeg开发笔记(八十七)采用Kotlin的手机开源播放器VLC-Android
《FFmpeg开发实战:从零基础到短视频上线》一书的“3.4.1 通用音视频播放器”介绍了如何在桌面系统上安装和使用通用音视频播放器VLC media player,其实VLC是个跨平台的播放器,它也提供了面向Android平台的手机版VLC。
Android版VLC的官网地址是https://code.videolan.org/videolan/libvlc-android,源码托管地址 ...
Launcher 卡片框架多模块集成
方案一、aar架包集成
最简单直接的方案,卡片侧实现,打成aar包提供到launcher显示
方案二、AppWidget
原生的桌面小组件方案,被限制无法自定义view
底层通过BroadcastReceiver实现
方案三、插件方案
插件方案有好几种,实现原理都是通过配置实现,其中有Service,BroadcastReceiver,Plugin
在SystemUI模块中,状态栏等模 ...
Android开发快速启动图文教程(Android Studio + Java)
目录一、创建项目二、认识开发界面1.项目目录2.左侧工具栏3.顶部工具栏三、代码开发1.xml布局(前端)1.1创建文件夹1.2需要注册的文件(Activity页面为例)1.3不需要注册的文件(Toolbar工具栏为例)2.逻辑代码(后端)2.1java代码目录(基于Android 系统内置的 SQLite 数据库工具类)2.2创建文件夹2.3用户交互逻辑2.4数据 ...
Android DrawerLayout侧边导航栏的实现步骤
目录简介实现步骤NavigationViewDrawerLayout的功能和特点简介
DrawerLayout是Android开发中一种常见的布局组件,常用于实现侧滑菜单效果,它允许一个或多个子视图在用户交互时从屏幕边缘滑出。
实现步骤
1.完成布局文件,以DrawerLayout为根布局,其第一个子布局为主布局,第二个子布局为侧边导航栏的布局。
DrawerLayout ...
Launcher 桌面源码笔记二
车模桌面加载成功后,需要各种交互
切换桌面处理
先补充如何切换桌面,初始化需要指定一个默认桌面,初始化其实两个桌面都会一起加载,假设默认是车模桌面,地图将不会初始化操作,但是地图桌面会内嵌到Launcher中
两个桌面是互斥的,基于这种模式下,就需要隐藏另一个桌面,因为切换动效的缘故,这里直接使用setTranslatio ...
在 Kotlin 中ViewModel 的获取及使用指南
目录在 Kotlin 中,ViewModel 的获取Kotin- Fragment 获取 ViewModel 实例正确方式1. 第一种获取方式:2. 第二种获取方式在 Kotlin 中,ViewModel 的获取
在 Kotlin 中,by viewModels() 和 by viewModels { } 都是用来在 Activity 或 Fragment 中获取 ViewModel 实例的属性委托。它们之间的区别在于是否传递自定义的 ViewM ...
Launcher 桌面源码笔记一
3D车模通过TaskView显示在Launcher,首先需要知道,为什么要用TaskView,而不是Activity,然后在说加载流程
1、surface比activity等效率更高,特别是针对车模跟地图等重量级场景
2、切换桌面等场景时,可以更精确的控制暂停恢复
3、进程隔离,更精细的生命周期管理跟控制
4、taskView中SurfaceControl的跨进程绑定机制(rep ...
Android Compose 状态的概念及实际应用
目录Jetpack Compose 中的状态一、什么是“状态”?二、状态和“组合/重组”的关系三、可组合项里怎么存状态?(2个核心API)1. remember:负责“存储状态”2. mutableStateOf:负责“让状态可观察”四、声明 MutableState 的3种方式(语法糖,按需选)五、传递对象和传递值的区别 ...
氛围灯动态屏保取色方案二
hue查找:整体偏差不会很大,但是对于亮度较高存在误差,精准度不够
lab查找:整体一般,但是精准度较好,不过算法复杂,增加耗时
hue色相查找存在误差,在有限的256色中,匹配的规则需要调整
这里使用lab算法提高精准度
RGB转Lab
fun rGBToLab(r: Int, g: Int, b: Int): DoubleArray {
// 处理负值(如-2563864 ...
Android Handler 机制原理解析
目录一、 概述二、 核心组件1. Handler(处理器)2. MessageQueue(消息队列)3. Looper(循环器)4. Message(消息)三、工作原理1. 整体流程图2. 详细执行过程1. 初始化 Looper(子线程示例)2. 消息发送机制3. 消息处理流程四、源码分析(精简版)1. Looper 核心实现2. MessageQueue 关键方法enqueueMessage()—&md ...
FFmpeg开发笔记(八十三)国产的视频裁剪框架AndroidVideoTrimmer
《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在Android系统上还有一款国产的开源视频裁剪框架Android-Video-Trimmer,通过该框架可以更快地裁剪视频片段,下面就来介绍如何在App工程 ...
几种常见的Android性能与内存优化策略
目录1. 减少布局层级2. 图片资源优化3. 避免内存泄漏4. 使用ProGuard混淆代码5. 优化数据库操作6. 利用性能监控工具1. 使用 RecyclerView 而不是 ListView2. 使用 Glide 或 Picasso 加载图片3. 避免内存泄漏4. 使用 ProGuard 进行代码混淆和优化5. 使用 LeakCanary 检测内 ...
氛围灯动态屏保取色方案一
氛围灯并不支持所有的颜色,只能支持256色,所以在取到图片颜色后需要根据结果颜色去跟氛围灯所支持的256色对比,取最接近的结果色,然后同步到氛围灯显示
取色流程
取色需要用到原生 Palette.from(bitmap).generate() 方法,通过量化算法分析位图的像素颜色分布,提取最具代表性的颜色组合,也有异步获取方法,下面方法都 ...
Android Studio 2025 下载安装教程及配置环境(含下载地址+配置教程)
一、前言(新手必看)
不管你是刚学安卓开发的学生,还是想自己做 APP 的爱好者,Android Studio 2025 都是绕不开的工具 —— 毕竟这是 Google 官方唯一认的安卓开发 IDE。很多新手第一次装会踩坑,比如把软件装 C 盘导致电脑卡、SDK 路径设错开不了项目、不知道在哪下安全的安装包,这篇教程会把这些问题都讲透,跟着步骤 ...
Android使用ViewPager2实现简单的轮播图的代码示例
目录一、轮播图的简单介绍二、轮播图的实现步骤1.绘制轮播图页面2.设置ViewPager2的子布局3.编写ViewPager2的适配器4.编写Carousel类具体实现轮播图5.实现自动轮播6.触摸时停止自动轮播三、完整代码一、轮播图的简单介绍
轮播图(Carousel)是一种在有限空间内循环展示多个内容项的UI组件,用户可以通过滑动或自动播放的方 ...
Android通过Dialog实现全屏的示例代码
目录引言一、Dialog的初始化二、全屏和非全屏的实现引言
在项目的实际开发中会碰到有些View需要横屏全屏的情况,比如视频播放的View,详情的View等,如果跳转到新的Activity或Fragment来展示横屏全屏,有些进度、状态等携带过去又很麻烦,这样的情况下通过Dialog实现全屏就是一个选择。
一、Dialog的初始化
一般情况下Activi ...
Android杀死选中进程并释放进程占用空间的方法详解
目录1. 进程管理的重要性2. 如何获取当前运行的进程信息3. 杀死选中的进程4. 示例:实现一个简单的进程管理器5.方法补充获取 ActivityManager 实例杀死指定的进程检查权限完整示例代码注意事项替代方案在Android开发中,管理和优化应用的性能是一个重要的课题。特别是在资源管理方面,如何有效地管理进程,确保应用 ...
Android Gradle 基础配置、高级用法与最佳实践
目录一、核心配置概览二、基础配置详解1. 项目根目录build.gradle2. 模块级build.gradle插件声明android闭包配置依赖管理三、高级用法与最佳实践1. 统一依赖管理(推荐方式)1.使用ext+config.gradle2.使用gradle/libs.versions.toml2. 多环境构建3. 动态配置与任务定制1. 自定义 Gradle 任务2.构建前自动修改版本号4. 构建 ...
Android 中的 mk 和 bp 文件编译示例详解
目录1. Android.mk 文件基本概念基本语法示例2. Android.bp 文件基本概念基本语法示例3. 主要区别对比4. 常见模块类型Java 库Android 应用预编译库5. 高级特性条件编译(在 bp 中)变量和函数6. 转换示例mk 转 bp 示例7. 最佳实践主要介绍 Android 中的 mk 和 bp 文件的编译方式, Android 构建系统的两种不同配置文件。
1. ...
2.Android Compose 基础系列:在 Kotlin 中创建和使用变量
在应用开发中,有些内容是固定的,例如“设置”中的菜单项;而有些内容会不断变化,比如新闻应用中的标题、来源或发布时间。为了让这些变化自动更新,而不是每次都修改代码,我们需要使用 变量(variable)。
🎯 学习目标
了解什么是变量,并学会定义和更新变量
掌握如何为变量选择合适的数据类型
学会在代码中添加注释, ...