Android 中 StateFlow 的使用全面解析
目录一、核心概念1. 什么是 StateFlow?2. StateFlow 与 LiveData 的对比二、基本使用步骤1. 依赖配置2. 核心 API 说明三、完整示例(MVVM 架构)1. ViewModel 层(状态持有与更新)2. Activity/Fragment 层(收集状态)四、高级特性1. 状态转换与过滤2. 多状态合并3. 防抖动(Debounce)4. 状态持久化五、注意事项六、总结 ...
Android 中 LiveDataBus 的使用及原理解析
目录一、LiveDataBus 原理二、LiveDataBus 实现1. 核心单例类2. 扩展函数(可选)三、基本使用方式1. 发送事件2. 接收事件3. 粘性事件处理四、高级用法1. 生命周期控制2. 多模块通信3. 事件取消五、注意事项六、优缺点对比优点缺点七、总结LiveDataBus 是基于 Android 架构组件 LiveData 实现的事件总线,相比传统的 EventB ...
Android使用Fragment实现控制切换多个页面
目录1. 创建Fragment1.1 创建Fragment类1.2 创建Fragment布局文件2. 在Activity中管理Fragment2.1 创建Activity布局文件2.2 编写Activity代码3. 运行效果4.方法补充方法一方法二在Android开发中,Fragment 是一个非常重要的组件,它允许开发者将复杂的界面拆分成更小、更易于管理的部分。通过使用 Fragment ...
FFmpeg开发笔记(九十二)基于Kotlin的开源Android推流器StreamPack
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2 FFmpeg推流和拉流”提到直播行业存在RTSP和RTMP两种常见的流媒体协议。除此以外,还有于2017年推出的SRT协议,相比常见的RTMP协议,SRT协议具有更低的延迟,并且消除了卡帧、抖动等花屏现象。
因为SRT是个较新的直播协议,所以手机端支持SRT的开源框架比较 ...
FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder
《FFmpeg开发实战:从零基础到短视频上线》一书的“10.2.2 FFmpeg向网络推流”介绍了轻量级流媒体服务器MediaMTX,通过该工具可以测试RTSP/RTMP等流媒体协议的推拉流。除了国产的推流工具librestreaming能够向MediaMTX推送视频流之外,还有开源的RootEncoder也支持Android手机从摄像头实时采集视频信号,并向后端的 ...
Android使用java实现网络连通性检查详解
目录NetCheck.java(可直接拷贝)使用示例(Activity/Fragment 内)权限要求(AndroidManifest.xml)如需同步调用(阻塞)下面给出 纯 Java 代码、兼容 Android API 19+、零三方库 的“网络连通性检查”工具类。 特点:
同时检测 Wi-Fi/移动数据是否真正上网(不只是“已连接”)使用 HttpURLConnectio ...
前端使用阿里云图形验证码并且与安卓进行交互实现方法
目录流程如下1.引入阿里云前端脚本 & 基础配置 在<head> 里:2.初始化阿里云验证码实例3.验证码通过后,前端调用你后端接口跟安卓原生通讯的逻辑与安卓约定的对象和方法小结完整代码:总结 最近安卓同事那边没办法去用原生的图形验证码;要前端写个html内嵌进去,下面是流程如何实现的:
流程如下
1.引入阿里云前端脚 ...
Android如何用Canvas画一个真正能跑的跑马灯
目录前言效果图如下:核心:总结 前言
以前自学,都是用帧动画来实现跑马灯,这几天常失眠,晚上学东西也学不进,所以用Canvas写个小Demo,这么无聊的应该只有我一个了吧,废话不多说,下面上内容。
老规矩,最后有源码
效果图如下:
上代码前先介绍下手机坐标系,如下图
然后是绘制草图,如下:
大概思路为,开一 ...
Android Compose基于单向数据流构建界面的过程
目录构建 Compose 界面单向数据流什么是状态向下流动,事件向上传递遵循该模式的三大优势Jetpack Compose 中的单向数据流三个核心要点定义可组合项参数Compose 中的事件传递不可变值的优势通用可组合项示例ViewModel、状态和事件:示例登录屏幕的状态与事件建模其他状态容器的用法构建 Compose 界面
在 Jetpack Compose 中 ...
Android常见滑动冲突场景及解决方案
目录前言1. 滑动冲突的场景2. 滑动冲突的处理规则3. 滑动冲突的解决方式3.1 外部拦截法3.2 内部拦截法4. 解决滑动冲突的实例前言
Android滑动冲突是Android开发中常见的问题,在同一个界面,可能存在多个View可以响应滑动事件。如果这些View滑动方向一致,则会导致滑动冲突。本篇文章将围绕常见的滑动冲突场景展开,并介绍 ...
Android使用Tint为图标Icon动态着色的操作方法
目录1. 背景2. 使用 Tint 动态着色2.1 使用方式2.2 原理分析3. 注意事项3.1 同时设置 ImageView 与 Drawable,Drawable 的设置会失效1. 背景
在 App 当中,会有很多 形状相同、颜色不同 的 Icon。
例如上图这个场景,是筛选项的 icon,对应的代码可能为:
Xml 中初始化颜色为黑色
<ImageView
...
android:src="@dr ...
2025最新版Android Studio安装及组件配置教程(SDK、JDK、Gradle)
目录原生 Android 简介Android Studio必备组件一、Android Studio安装二、Android SDK 配置三、JDK 配置(选做)四、Gradle 配置五、新项目测试总结 原生 Android 简介
Android 是由 Google 开发的移动操作系统,而“原生 Android 开发”指的是直接使用 Java 或 Kotlin 语言,以及 Android SDK,来为这个操 ...
Android Binder 详解与实践指南(最新推荐)
目录Android Binder 详解与实践指南1. Binder 基础概念1.1 什么是 Binder?1.2 Binder 架构组件2. Binder 基础实例2.1 简单的 Binder 服务端2.2 定义 AIDL 接口2.3 数据模型定义2.4 客户端实现2.5 布局文件2.6 AndroidManifest 配置3. 运行结果分析4. 高级 Binder 特性4.1 带回调的 Binder 服务4.2 回调服务实现4.3 客户端 ...
Android动效探索:彻底弄清如何让你的视频更加酷炫
作者: vivo 互联网客户端团队- Xu Jie在Android移动端视频处理领域,除了基本的播放功能外,添加动画和滤镜等特效已经成为提升用户体验的重要手段。然而,很多开发人员可能对于实现这些功能所需的技术细节感到困惑。因此,本文旨在提供一个详细的指导,帮助开发人员掌握如何使用开源MediaPlayer或自定义播放器,并利用Open ...
Android开发(Kotlin) ViewModel基本用法示例详解
目录ViewModel基本用法向ViewModel传递参数ViewModel基本用法
创建viewmodel
class MyViewModel: ViewModel() {
}
实现一个计数器
class MyViewModel : ViewModel() {
var count = 0
}
在activity使用ViewModel,获取ViewModel的实例需要通过ViewModelProvider。点击按钮一次计数器加1
override fun onCreate(savedIn ...
Android系统中调用电话和短信功能的实现方法
目录前言一、Intent与系统权限1.1 隐式意图1.2 系统权限机制二、实战一:打电话功能实现(两种方式)2.1 方式一:直接拨号(ACTION_CALL)2.1.1 步骤1:声明静态权限(AndroidManifest.xml)2.1.2 步骤2:代码实现2.2 方式二:跳转到拨号盘(ACTION_DIAL)2.2.1 代码实现(无需动态权限)2.2.2 两种方式对比表三、实战二: ...
使用Android Service实现后台音乐播放功能
目录前言前置准备一、Service核心概念1.1 什么是Service?1.2 Service生命周期(重点)1.3 项目结构总览二、代码实现2.1 第一步:添加音乐资源2.2 第二步:编写Service核心类(MusicService.java)2.3 第三步:编写界面布局(activity_service.xml)2.4 第四步:编写Activity交互逻辑(ServiceActivity.java)2.5 第五步: ...
Android开发(Kotlin) retrofit基本使用教程
导入retrofit
dependencies {
........
implementation("com.squareup.retrofit2:retrofit:3.0.0")
implementation("com.squareup.retrofit2:converter-gson:3.0.0")
}
创建单例类
object ServiceCreator {
private const val BASE_URL = "https://7a6396f8-09a1-4ade-b42a-f6db7776fb31.mock.pstmn.io"
...
从零开始讲解Android Studio打包WebView应用教程(附签名配置)
目录一、打包前的准备工作二、生成正式版 APK/App Bundle三、打包 WebView 应用的注意事项四、测试打包后的应用总结以下是使用 Android Studio 将包含 WebView 的应用打包为 APK 或 App Bundle 的完整步骤:
一、打包前的准备工作
确保项目可正常运行先通过模拟器或真机测试 WebView 功能,确认加载网页、交互等逻辑无异常 ...
Android自定义view详解及Measurepec深入解析
目录理解自定义View的三大流程深入解析MeasureSpec1. 三种测量模式的含义2. MeasureSpec的确定规则实现自定义View的关键步骤1. 继承View类并重写构造方法2. 正确处理测量(重写onMeasure)3. 实现绘制(重写onDraw)进阶技巧与优化建议理解自定义View的三大流程
自定义View的绘制主要围绕三个核心过程展开,它们依次执行, ...