android RecycledViewPool的作用详解
目录一、先明确基础概念二、为什么会“频繁创建ViewHolder”?三、viewType和缓存池容量的关系四、为什么“调整RecycledViewPool容量”能解决问题?总结一、先明确基础概念
RecycledViewPool 是什么?
它是 RecyclerView 的“缓存池”,专门存储那些“暂时用不到但可能后续复用” ...
Android Hilt 入门使用实战
目录一 Android Hilt 入门教程实战1️⃣ 为什么要用 Hilt?2️⃣ Hilt 的基本使用📌(1)添加 Hilt 依赖📌(2)初始化 Hilt📌(3)在 Activity/Fragment 使用 Hilt📌(4)在 ViewModel 里使用 Hilt📌(5)创建 Hilt 模块(Module)3️⃣ Hilt 作用域4️⃣ Hilt 实战示例1️⃣ 创建一个 Repository2️⃣ 在 ViewModel 里注入 ...
Android原生App和WebView的交互方式详解
目录一、前言二、交互2.1 编写本地 html2.2 编写 app三、后话附:一些常见的问题一、前言
在移动开发中,我们有时候会遇到这样的需求:
有一部分功能需要网页实现(比如登录页、主页,已经有网页端了,不希望在 app 中再写一遍)另一部分功能需要原生实现(比如硬件访问、获取系统权限、或者一些注重性能的逻辑)
这时候 Hy ...
算起计算器APP—好看好用的多功能计算器
算起计算器APP介绍
算起计算器是一款多功能计算器应用,个人用户永久免费使用,提供多种计算功能,包括基础数值计算功能和扩展计算功能。
基础数值计算功能
包括:
科学计算器
进制计算器
扩展计算功能
扩展计算功能即多功能计算工具箱,涵盖:
时间-日期计算
BMI 计算
速度、长度距离单位转换
闰年计算
温度单位换 ...
基于android编写一个下载管理工具类
相信大家在项目开发的过程中会用到下载相关的操作,下面是我在工作中用到的下载逻辑管理类,支持下载和取消下载,进度监听功能,能满足大多数场景需求,希望对大家有帮助
以下是完整代码:
import android.os.Handler;
import android.os.Looper;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableL ...
Android开发(Kotlin) 扩展函数和运算符重载的使用
目录扩展函数运行算符重载扩展函数及运算符重载的联合使用扩展函数
扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。语法格式
fun ClassName.methodName(param1:Int,param2:Int):Int{
}
向String类中添加一个扩展函数,创建.kt文件,文件名没有特殊要求。定义成顶层方法。
fun Str ...
Android实现获取定位信息的工具类
相信大家在项目中应该会经常用到这类功能,需要在请求api的时候获取当前定位信息,以便获取周边信息,以下是我常用的工具类,大家应该用得上
import android.annotation.SuppressLint;
import android.content.Context;
import android.location.Location;
import android.location.LocationManager;
import android.os.Han ...
FFmpeg开发笔记(八十八)基于Compose的国产电视直播开源框架MyTV
MyTV是一款使用Android原生开发的网络直播软件,它的原理是接入网络上的直播推流链接,通过Android提供的ExoPlayer来播放直播节目。有关网络推拉流的直播技术可参考《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”。
MyTV的源码托管地址为https://github.com/yaoxieyoulei/mytv-android ...
Android Intent详解(最新推荐)
目录一、Intent 核心作用二、Intent 类型1. 显式 Intent(Explicit Intent)2. 隐式 Intent(Implicit Intent)三、Intent 核心属性1. Action(动作)2. Category(类别)3. Data 与 Type(数据与类型)4. Extra(附加数据)5. Flag(标记)四、Intent 过滤器(Intent Filter)过滤器匹配规则示例:为Activity配置过滤器五 ...
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 ...
Android实现监听手机开机事件的多种方法
目录1. 基本原理2. 实现步骤2.1 创建BroadcastReceiver2.2 注册BroadcastReceiver2.3 权限设置3. 注意事项4.方法补充方法一方法二在开发Android应用时,有时我们需要在设备启动完成后执行某些操作,比如检查更新、同步数据等。为了实现这一功能,我们需要监听 设备的开机完成事件。本文将详细介绍如何在Android中实现开机启 ...
在 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 ...