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)。
🎯 学习目标
了解什么是变量,并学会定义和更新变量
掌握如何为变量选择合适的数据类型
学会在代码中添加注释, ...
Android实现获取当前时间并转为时间戳
目录1. 获取年月日时分秒2. 区分系统时间是24小时制还是12小时制3. 字符串转时间戳4. 时间戳转字符串方法补充在项目开发中,难免会遇到使用当前时间,比如实现网络请求上传报文、预约、日历等功能。
1. 获取年月日时分秒
在获取时间之前,首先要引入SimpleDateFormat:
import java.text.SimpleDateFormat;
实现代码:
Sim ...
Android开发教程之屏幕变更事件
目录一、什么是屏幕变更事件?常见的配置变更类型二、默认行为:Activity 重建生命周期流程问题与挑战三、方案一:允许重建 + 正确保存状态1. 使用 onSaveInstanceState() 保存临时状态2. 使用 ViewModel 保留复杂数据四、方案二:阻止重建 + 手动处理变更1. 声明要自行处理的配置变更2. 重写 onC ...
Android 自定义Binding Adapter实战应用及作用详解
目录1. Binding Adapter 的基本概念和作用2. 常见应用场景与代码分析2.1. 绑定简单属性和多个属性2.2. 处理列表数据绑定到 RecyclerView2.3. 绑定复杂对象和多参数2.4. 绑定图片加载库2.5. 条件判断和多类型 View 处理3.@JvmStatic和companion objectOutlineProvider.ktDatabindingAdapter.ktBindingResourceUtil.ktDataBin ...
Avalonia:开发Android应用
我把成功开发Android应用的经过记录下来,在开发过程中,模拟器经常出问题,将Java Development Kit的位置和Android SDK的位置改动一下,就解决了模拟器报错的问题,这是在Github上看到的解决办法。
先建Models文件夹,创建模型ColorItem.cs文件。
using Avalonia.Media;
namespace AvaloniaMobileApp.Models
{
public ...
Android自定义电池组件实例代码(BatteryView)
目录支持:1、自定义属性res/values/attrs.xml2、 组件代码BatteryView.kt3、XML 用法示例4、代码控制示例5、常见问题(结合你之前的疑问)6、小扩展(可选)支持:
XML 与代码动态设置电量(0–100)充电 charging 与快充 fastCharging 区分(闪电样式 + 动画)电量阈值自动配色:<20% 红、<50% ...
Android Doze低电耗休眠模式 与 WorkManager详解
目录1. Doze模式下,WorkManager setInitialDelay设置小于15分钟,被系统强制到15分钟执行,怎么办 ?2. 了解低电耗模式(Doze)3. 低电耗模式限制4. Doze模式下,WorkManager 为何无法精确时间执行 ?5. Doze模式下,如何精确时间执行 ?5.1 声明权限5.2 调用前需验证是否已授权5.3 创建 BroadcastReceiver : 接收 ...