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 ...
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组件,用户可以通过滑动或自动播放的方 ...