自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xiangxiongfly

Android & Flutter & H5

  • 博客(643)
  • 资源 (21)
  • 收藏
  • 关注

原创 Android BLE开发总结

Android BLE开发总结在Android BLE开发中,设备、服务、特征和描述它们之间的关系如下:设备(Device):指BLE设备,如蓝牙耳机、传感器等。服务(Service):指BLE设备所提供的服务,一个BLE设备可以提供多个服务,每个服务有一个唯一的UUID,服务中包含多个特征值。特征(Characteristic):指BLE设备服务中的特征值,每个特征值有一个唯一的UUID,可以读取、写入和监听特征值数据。描述(Descriptor):指BLE设备服务中特征值的描述信息,描述信息

2023-03-27 15:38:28 1750 3

原创 Java HashMap源码分析

JDK1.7为:数组+链表。JDK1.8为:数组+链表+红黑树。

2021-07-14 16:34:03 374

原创 Android Handler机制

文章目录Handler 源码分析Handler核心类Handler机制分析Handler基本使用Handler#enqueueMessage()MessageQueueue#enqueueMessage()Looper#loop()MessageQueue#next()Handler#dispatchMessage()Handler机制流程图及总结常见问题线程、Handler和Looper的对应关系Handler内存泄漏问题子线程中使用HandlerMessage创建方式Handler如何保障线程安全Loo

2021-07-09 13:37:28 370 2

原创 Android View的工作流程

View的measure流程View的layout流程View的draw流程

2021-02-16 21:03:22 300

原创 Java LinkedList源码分析

LinkedList总结LinkedList本质是一个双向链表,内部维护链表头节点和尾节点。Node是LinkedList的一个静态内部类,是LinkedList的核心,内部维护具体的值和上下节点的关系。相对ArrayList增删效率高,查询效率低,线程不安全。

2020-04-09 15:20:48 674

原创 Java ArrayList源码分析

本质是数组操作,最终调用System.arraycopy()实现底层扩容和增删等操作。查询效率高,增删效率低,线程不安全。

2020-04-07 11:21:24 540

原创 Android WMS流程

Window & Activity & DecorView & ViewRoot关系

2019-08-27 16:54:53 829

原创 Android 事件分发机制

当我们点击屏幕,就产生了触摸事件,这个事件被封装成了一个类:MotionEvent。而当这个MotionEvent产生后,那么系统就会将这个MotionEvent传递给View的层级,MotionEvent在View的层级传递的过程就是点击事件分发。

2019-08-22 16:37:06 532

原创 Java 值传递问题

本文分析了Java中的值传递机制。Java方法参数传递永远是变量值的副本:对于基本数据类型传递的是值本身,修改副本不影响原值;对于引用类型传递的是对象地址值副本,可通过地址修改对象属性,但不能修改原引用本身。通过三个示例演示了基本类型、引用类型属性修改和引用本身修改的不同表现,证实了Java只有值传递的特性。理解这一机制对避免编程中的常见误区至关重要。

2026-01-02 12:07:16 110

原创 JavaScript 惰性函数

JavaScript惰性函数通过函数自我覆盖实现延迟执行和性能优化。在性能优化方面,惰性函数首次调用时会检测浏览器特性并替换为最优实现,避免重复判断(如事件绑定示例)。在延迟加载方面,惰性函数仅在需要时才创建对象(如用户数据示例),减少不必要的初始化开销。这两种模式都能有效提升代码执行效率,特别适用于需要频繁调用或资源初始化的场景。

2026-01-01 22:46:03 113

原创 TypeScript 工具类型

TypeScript工具类型是提高开发效率和代码质量的强大工具,主要包括Partial(属性可选)、Required(属性必填)、Readonly(属性只读)、Pick(选取属性)、Omit(排除属性)、Exclude/Extract(联合类型操作)、NonNullable(排除空值)、ReturnType/Parameters(函数类型操作)、Record(键值映射)和ThisType(this类型指定)等。这些工具类型能减少重复代码、提高类型安全性、增强可读性并提升开发效率,通过示例展示了各种工具类型的

2025-12-24 11:55:47 411

原创 TypeScript 总结

TypeScript 是 JavaScript 的超集,提供类型安全检查和更完善的开发工具支持。文章总结了 TypeScript 的核心特性、运行方式、与 JavaScript 的区别以及基本类型系统。重点介绍了接口的使用方法,包括可选属性、只读属性、函数类型接口和可索引类型。通过类型声明和接口定义,TypeScript 能显著提升代码的可维护性和开发效率。文章还提供了 tsconfig.json 配置示例和两种运行 TypeScript 代码的方式(编译为 JavaScript 或直接运行)。

2025-12-24 11:54:54 799

原创 ECharts 使用地图

ECharts地图使用指南摘要:ECharts 5+版本不再内置地图数据,需从GitHub或阿里云DataV获取。地图配置有两种方式:1) geo组件提供基础地图显示,支持缩放/拖拽交互;2) series.map类型直接绘制可视化数据。示例展示了geo+散点图组合使用,以及visualMap实现数据分级着色。关键配置包括:注册地图数据、设置坐标系、定义交互样式和数据绑定。Vue示例代码演示了完整实现流程,包含地图初始化、选项配置和组件销毁。

2025-12-22 11:10:00 389

原创 ECharts 使用总结

ECharts使用总结摘要 ECharts是一个基于JavaScript的开源可视化图表库,支持Canvas和SVG双引擎切换。常用API包括初始化图表(setOption)、调整大小(resize)和事件监听(on/off)。核心配置项涵盖标题(title)、提示框(tooltip)、图例(legend)、网格(grid)和坐标轴(axis)等组件,支持丰富的样式定制。图表类型通过series配置,如折线图可设置线条样式(smooth)、标记点(symbol)和区域填充(areaStyle)。EChart

2025-12-18 11:42:22 729

原创 Android 虚拟机的发展

Android虚拟机经历了从DVM到ART的演进。DVM采用解释执行和JIT编译,安装快但运行效率低。ART引入AOT预编译技术,在Android 7.0后采用"JIT+PGO+AOT"混合策略,大幅提升性能。DVM适合早期低配设备但存在GC卡顿问题;ART通过并发GC、共享内存等优化,使启动速度提升2倍,内存占用减少50%,但增加了安装时间和存储空间。两种虚拟机各具特点,ART已成为现代Android系统的默认选择。

2025-11-26 16:12:43 290

原创 Android AGP与Gradle关系

本文介绍了Android AGP插件与Gradle构建系统的关系。Gradle是通用构建系统,而AGP是专为Android开发的插件,提供资源编译、APK打包等特有功能。文章通过工作流程图展示了二者协作过程,并提供了查看Gradle和AGP版本的方法。最后列出了AGP与Gradle的版本兼容性要求,强调开发者需注意版本匹配。二者的关系可形象理解为"Gradle是引擎,AGP是Android专用驱动程序"。

2025-11-26 13:20:54 359

原创 Android 版本控制总结

本文总结了Android项目中四种版本控制方法:1. 直接指定版本号,在build.gradle中硬编码依赖版本;2. 使用变量占位符,通过def声明变量引用;3. 使用ext扩展属性,在config.gradle中集中管理版本号;4. 利用gradle.properties文件存储版本信息。后两种方法实现了版本信息的集中管理,便于项目维护,其中ext方法支持结构化配置,而gradle.properties则提供了更简单的键值对存储方式。这些方法可根据项目复杂度灵活选择,从简单直接到可维护性强的方案逐步升级

2025-11-26 11:40:47 969

原创 CSS svg

SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形,由 W3C 指定,支持无损缩放、交互性和动态效果。特点:https://www.iconfont.cn/SVG图标必须包裹在 标签内。结构:获取svg描边的长度:在 svg 的 path 上定义id,通过该 id 在控制台执行JavaScript代码:id名.getTotalLength()

2025-11-23 22:29:50 679 1

原创 CSS animation-timeline动画时间线

CSS animation-timeline 是一种将动画进度与页面滚动或元素可见性关联的新特性,可创建流畅的交互效果。它支持两种驱动方式:scroll()监听滚动容器进度,view()监听元素可见度。示例展示了两种应用场景:1) 固定导航栏中的彩色进度条随页面滚动展开;2) 图片元素在进入视口时执行缩放和透明度变化的动画。这种技术无需JavaScript即可实现基于滚动的动态效果,为网页增添视觉吸引力。

2025-11-21 12:58:32 1057

原创 CSS clip-path裁剪效果

摘要:CSS clip-path 属性用于创建元素裁剪效果,支持多种形状如多边形、圆形、矩形和椭圆形。通过指定坐标点或参数,可将元素裁剪为三角形、菱形、圆形等创意图形。文中提供了代码示例和可视化工具链接,展示如何使用clip-path实现不同裁剪效果,包括三角形、圆形、菱形、内嵌矩形和复杂多边形等。该属性需配合-webkit-前缀使用,适用于图片、div等HTML元素的创意展示。

2025-11-18 15:24:24 242

原创 CSS box-reflect倒影效果

CSS box-reflect是一个非标准属性,主要用于在WebKit浏览器中为元素创建倒影效果。它通过指定倒影方向(上、下、左、右)、距离和可选的遮罩图像来实现。示例代码展示了如何为一个渐变背景的盒子添加下方8px的倒影,并使用渐变实现倒影渐隐效果。该属性需要添加-webkit-前缀,目前在Chrome和Safari等浏览器中支持。倒影效果可以为网页元素增加视觉深度和美观性,但应注意其跨浏览器兼容性限制。

2025-11-18 15:05:18 402

原创 CSS link标签

CSS link标签主要用于在HTML文档中引入外部资源。它位于<head>部分,具有多种用途:引入样式表、定义网站图标、预加载资源等。常用属性包括rel(定义资源关系)、href(资源路径)、type(资源类型)和media(响应式控制)。典型用法包括:链接多个CSS文件实现模块化、通过media属性实现响应式设计、添加网站favicon图标,以及使用preload/preconnect优化资源加载性能。这些功能使link标签成为前端开发中的重要元素。

2025-11-12 10:30:06 335

原创 Android 自定义View之评分条

Android 自定义View之评分条

2025-09-29 10:53:00 284

原创 Android 自定义View之BubbleImageView

自定义View之BubbleImageView

2025-09-23 14:39:21 462

原创 Android CoordinatorLayout+AppBarLayout+CollapsingToolbarLayout实现折叠置顶效果

通过CoordinatorLayout、AppBarLayout和CollapsingToolbarLayout可实现Android折叠置顶效果。布局层级为CoordinatorLayout包含AppBarLayout和NestedScrollView,AppBarLayout内嵌CollapsingToolbarLayout实现可折叠区域。方式一采用单层结构,Toolbar固定在顶部;方式二添加TabLayout作为第二层置顶区域。关键属性包括layout_scrollFlags控制滚动行为,layout

2025-09-12 13:44:20 1099

原创 Android 圆形和圆角矩形总结

ViewOutlineProvider 是 Android 5.0 引入的一个类,用来定义视图的轮廓(outline可以通过它来实现圆角矩形、椭圆、圆形等效果。</

2025-08-18 14:00:12 482

原创 Android ViewPager2+Fragment viewModelScope问题

Android ViewPager2+Fragment viewModelScope问题

2025-08-15 15:03:19 337

原创 JavaScript 普通函数和箭头函数

箭头函数和普通函数

2025-07-07 13:42:45 330

原创 Kotlin 退出循环总结

for循环forEach()嵌套for循环lambda函数inline函数

2025-06-26 09:33:41 339

原创 System.currentTimeMillis() 和 SystemClock.elapsedRealtime()

【代码】System.currentTimeMillis() 和 SystemClock.elapsedRealtime()

2025-06-24 14:12:38 397

原创 Android 倒计时总结

简单需求:优先选用CountDownTimer,避免重复造轮子界面交互:使用Handler时注意与View的生命周期绑定后台任务:Timer方案需配合Service使用新项目推荐:采用Kotlin Flow实现,搭配协程更高效性能关键:避免在倒计时回调中执行耗时操作内存优化:所有方案都需注意释放资源

2025-05-29 11:38:42 558

原创 Android setContentView()源码分析

setContentView() 源码分析

2025-05-06 16:09:52 505

原创 Android View#post()源码分析

在 Activity 中,在 onCreate() 和 onResume() 中是无法获取 View 的宽高,可以通过 View#post() 获取 View 的宽高。

2025-05-06 15:09:16 729

原创 Kotlin 边界限制

传统方式coerceIncoerceAtLeastcoerceAtMost自定义类型

2025-04-23 10:24:32 502

原创 Android 防抖和节流

防抖是指在事件被触发后,等待一段时间,如果在这段时间内没有再触发事件,才执行处理函数。如果在这段时间内又触发了事件,就重新开始计时节流是指在一定时间间隔内,无论事件触发多少次,只执行一次处理函数。

2025-04-02 11:15:13 584

原创 Android Logcat总结

日志时间进程和线程的ID日志名包名日志等级日志的内容。

2025-03-27 13:55:33 759

原创 AndroidStudio 下载

Android Studio 的发布周期分为多个阶段,结合 Google 的发布策略调整,其节奏和形式近年来有所变化。普通开发者:使用 Beta 版或 Stable + Feature Drop 版,平衡新功能与稳定性。生产环境:优先选择最新 Stable 版 + Patch,确保安全性。尝鲜者:关注 Canary 版,提前体验新功能。

2025-03-26 13:36:57 1314

原创 Android 自定义View之底部导航栏

封装一个通用的底部导航栏控件。

2025-03-12 12:34:56 653

原创 Android Spinner总结

在 Android 中,Spinner是一个下拉选择框。

2025-03-12 12:26:06 1006

原创 Android Coil总结

Coil 是一个用于 Android 的 Kotlin 图像加载库,旨在简化图像加载和显示的过程。它基于 Kotlin 协程,提供了简洁的 API 和高效的性能。.build()

2025-03-06 16:05:05 611

用于查看周围蓝牙设备信息

可以查看周围蓝牙设备信息,包含:蓝牙名、地址、设备类型等。

2024-01-12

Android 获取屏幕、状态栏、导航栏信息

手机屏幕高度 = 状态栏高度 + ActionBar高度 + ContentView高度 + 导航栏高度 有的手机开启全面屏手势后,底部导航栏会隐藏,有的则不会隐藏会变小,隐藏需要判断导航栏是否显示,然后再计算高度。

2023-11-03

Android BLE开发总结

AndroiBLE开发总结: 在Android BLE开发中,设备、服务、特征和描述它们之间的关系如下: - 设备(Device):指BLE设备,如蓝牙耳机、传感器等。 - 服务(Service):指BLE设备所提供的服务,一个BLE设备可以提供多个服务,每个服务有一个唯一的UUID,服务中包含多个特征值。 - 特征(Characteristic):指BLE设备服务中的特征值,每个特征值有一个唯一的UUID,可以读取、写入和监听特征值数据。 - 描述(Descriptor):指BLE设备服务中特征值的描述信息,描述信息通常包含对特征值的详细描述和配置信息。

2023-03-27

jquery1.12.4

jquery1.12.4 压缩版

2022-12-19

蓝牙串口调试助手apk

蓝牙串口调试助手

2022-09-09

Gson基本使用,数据容错处理

Gson基本使用,数据容错处理 适配boolean、Boolean、int、Integer、float、Float、double、Double、long、Long、String类型。 还包括服务器返回的restful规范数据。

2022-04-27

Android 软键盘处理

1. EditText基本使用 2. 软键盘遮挡问题及处理

2022-04-25

封装一个通用Dialog,使用DialogFragment

封装一个通用Dialog,使用DialogFragment有很多优势。

2018-07-12

android自定义通用PopupWindow

android 封装一个通用PopupWindow,避免重复造轮子,简化代码,方便管理。

2018-07-12

MyPhoto.rar

Android 调用系统相册、拍照、剪裁功能

2021-12-22

android_自定义TitleBar

开发过程中会遇见很多app顶部的控制栏,封装一个通用TitleBar

2018-07-04

android 自定义带删除按钮的EditText

自定义一个带icon图标带删除按钮的EditText,简洁代码。

2018-07-06

android通用LoadingView封装框架

手写一个通用加载中、显示数据、加载失败、空数据的LoadingView框架。

2018-07-05

Android防快速重复点击

Android防快速重复点击,防止多次重复点击导致多个相同的界面

2018-09-26

仿抖音列表

模仿抖音视频列表,一遍滚动一遍播放视频,全屏展示。

2018-09-20

android环形进度条

一个通俗易懂的环形进度条,可以定制颜色角度,监听进度。

2018-07-05

Android 启动页黑屏问题

Android 启动页黑屏问题,设置style样式,添加动画,增加界面流畅度

2018-08-20

Android 使用MVP+RxJava+Retrofit

Android使用MVP+RxJava+Retrofit,实现登录功能。

2019-04-02

android_验证码按钮

开发过程中会遇见很多app注册时,需要通过手机发送验证码验证 ,这是可以封装一个验证码按钮。

2018-07-04

android底部切换标签

android底部通用切换标签,Fragment嵌套页面,方便自定义

2018-07-04

仿IOS底部弹窗

使用PopupWindow仿一个IOS底部弹窗,进入退出动画,背景变灰

2018-08-19

Android简单使用ARouter

Android简单使用ARouter,普通使用、拦截器、服务等。

2019-03-20

Android动画

Android 视图动画( 补间动画,帧动画),属性动画详情使用

2018-07-17

两球旋转动画效果

两球旋转动画效果,可以用于加载时的动画展示,高自定义。

2018-08-29

ListViewDemo.rar

ListView基本使用,ArrayAdapter、SimpleAdapter、BaseAdapter

2019-11-05

RecyclerDemo.rar

Android RecyclerView基本使用完整代码!!! layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); recyclerView.addItemDecoration(new DividerItemDecoration(this, LinearLayoutManager.VERTICAL)); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(mAdapter);

2019-10-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除