自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Android 中实现 HMAC-SHA256

摘要:本文提供了Java实现的HMAC-SHA256加密工具类,兼容Java 8+和Android平台。核心方法包含字符串拼接、UTF-8编码、HMAC-SHA256加密和十六进制转换,完整处理了加密异常和字符编码问题。代码可直接复制使用,包含测试示例和异常处理说明,适用于设备登录签名等场景。

2026-01-31 09:26:43 430

原创 Android 执行AsyncTask 为什么有时候会卡顿很久才执行

**摘要:**在Android中,AsyncTask不应在Thread中执行,否则会导致卡顿或延迟。核心原因是AsyncTask依赖主线程的Looper,且默认使用串行线程池,任务会排队执行。正确做法包括:1. 始终在主线程调用execute();2. 使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)实现并发;3. 推荐弃用AsyncTask,改用协程、RxJava或ExecutorService。避免在子线程调用AsyncTask,确保任务调度高效执行

2026-01-22 16:19:49 517

原创 Android 全局悬浮窗

Android悬浮窗实现指南:需动态申请SYSTEM_ALERT_WINDOW权限,适配不同API版本(8.0+需使用TYPE_APPLICATION_OVERLAY),通过WindowManager添加视图并设置LayoutParams。关键步骤包括权限检查、视图创建、拖拽功能实现和边界处理,同时需注意性能优化和兼容性问题。提供完整的DraggableFloatWindow管理类实现方案,包含权限请求、视图创建、拖拽监听和边界限制等功能代码。

2025-12-20 14:41:55 917

原创 Android 数据库操作线程安全吗

Android数据库线程安全解析:原生SQLite需手动通过单例+同步锁保障多线程访问安全,而Room库通过禁止主线程操作、内置连接池和事务支持天然保证线程安全。Room推荐使用协程suspend函数或事务注解实现异步操作,避免手动管理线程同步问题,是更优选择。核心原则是避免多线程直接操作同一连接,优先采用异步/串行化方式访问数据库。

2025-12-11 17:52:48 354

原创 Android 生成海报、保存截图、分享图片

摘要: 本文提供一套完整的Android海报生成与分享解决方案,支持将ViewGroup转为高清图片并保存到相册或分享。方案包含四大核心步骤:1) 确保所有子View(包括网络图片)加载完成后再截图;2) 高效生成Bitmap并防止OOM;3) 兼容Android 10+的媒体存储API保存图片;4) 实现跨应用分享功能。特别解决了Glide图片异步加载导致截图黑块、长图模糊、存储权限兼容等常见问题,提供可扩展的Kotlin实现代码,适用于包含复杂布局和网络图片的场景。

2025-12-04 16:12:16 365

原创 Android getDrawingCache 过时废弃

Android中getDrawingCache()方法已被废弃,推荐使用更现代的替代方案。该API在Android 9(API 28)后被标记为@Deprecated,存在内存泄漏、尺寸限制和硬件加速冲突等问题。最佳替代方案包括:1)使用Canvas手动绘制View,兼容性好且支持任意尺寸;2)对屏幕上显示的View使用PixelCopy(API 24+)。若必须兼容旧代码,需在API 28以下使用并确保及时关闭缓存。开发者应避免使用废弃API,改用Canvas.draw()或PixelCopy等更安全高效

2025-12-04 15:07:52 515

原创 Android 切换应用语言

在 Android 开发中,切换应用语言(即本地化/国际化)多种实现方式

2025-12-02 17:37:21 1487

原创 Android 全局修改设备的语言设置

本文介绍了一种通过反射调用Android内部API来强制修改系统语言的高风险方法。通过反射调用 Android 系统内部 API 来全局修改设备的语言设置。这是一种需要系统权限(甚至 Root) 的做法,通常只在定制 ROM、系统级应用或测试环境中使用。

2025-12-02 17:31:05 458

原创 Android Cursor AI实践技巧

摘要:本文介绍了在Android开发中合理配置Cursor(AI代码编辑器)规则的方法,以提升AI生成代码的质量。核心思路是通过结构化提示词、自定义指令和上下文管理约束AI输出,包括技术栈约束、代码风格规范、项目结构固定和上下文关联。具体配置方法包括创建项目规则模板、自定义常用指令、管理上下文引用已有代码、明确技术栈版本限制以及通过示例代码统一风格。这些实践能帮助开发者减少代码修改量,提高开发效率。

2025-11-01 13:45:04 2593

原创 Android Cursor AI代码编辑器

Cursor是一款AI辅助编程编辑器,深度集成自然语言交互功能,显著提升Android开发效率。支持快速生成Kotlin/Java代码、XML布局,并能解释复杂逻辑。通过简单指令即可创建项目结构、生成登录页面布局、实现按钮点击事件等核心功能,还能自动生成Retrofit网络请求代码。编辑器支持代码解释和注释生成,简化开发流程,使开发者更专注于业务逻辑而非基础编码工作。

2025-11-01 13:41:43 2178

原创 Android 线程详解

摘要:Android线程机制分为主线程和子线程,主线程负责UI更新但需避免耗时操作,子线程用于处理耗时任务。线程创建方式包括继承Thread类、实现Runnable接口以及推荐使用的线程池。线程通信通过Handler-Looper-MessageQueue机制实现,还提供runOnUiThread()等便捷方法更新UI。多线程需注意同步问题,可通过synchronized、Lock或原子类保证线程安全。Kotlin协程是轻量级替代方案,能简化异步编程。

2025-10-31 09:15:34 726

原创 Android Intent详解

Intent是Android组件通信的核心机制,包含显式与隐式两种类型。显式Intent直接指定目标组件类名,用于应用内部启动;隐式Intent通过Action、Category、Data等属性描述意图,由系统匹配处理。Intent还可传递数据、控制启动模式,通过Intent过滤器声明组件处理能力。开发者需合理选择Intent类型,并注意数据传递限制与性能优化。

2025-10-31 09:10:49 455

原创 Android 16兼容详解

摘要:Android 16(API 36)的关键适配要点 Android 16在隐私、后台管理、安全机制和用户体验方面引入多项变更,需重点关注以下适配内容: 隐私权限精细化 健康传感器权限拆分为前台(HEALTH_SENSORS_FOREGROUND)和后台(HEALTH_SENSORS_BACKGROUND),需分步申请。 蓝牙扫描权限增加后台限制(每小时最多5次),需声明neverForLocation属性避免位置权限。 后台行为收紧 后台任务唤醒频率降至每小时3次,推荐使用WorkManager

2025-10-30 14:39:52 1421

原创 Android 自定义LinearLayoutManager 实现 RecyclerView无限循环滚动

摘要: LoopLayoutManager是一个实现RecyclerView无限循环滚动的自定义布局管理器,继承自LinearLayoutManager。它通过动态回收和填充视图,支持水平方向的平滑无限滚动(左右滑动无缝衔接),同时保持RecyclerView的高效复用机制。关键实现包括:1)根据滚动方向动态计算视图位置;2)自动回收不可见视图;3)按需填充新视图;4) 兼容原生Adapter无需修改数据源。只需替换默认LayoutManager即可快速实现循环列表效果,适用于轮播图等场景。

2025-10-30 11:03:35 588

原创 Android ConstraintLayout 使用详解

ConstraintLayout是Android官方推出的一种灵活布局管理器,通过约束关系定位UI元素,具有减少嵌套、提升性能的优势。核心功能包括:支持相对定位、边距调整、居中偏移、自适应尺寸和比例约束等。使用前需添加依赖,然后在XML中通过app:layout_constraintXXX属性定义视图间的约束关系。关键特性包括视图居中(bias)、尺寸自适应(0dp)和宽高比设置(ratio),可大幅简化复杂布局的实现。

2025-10-27 18:20:11 1172

原创 Android Math详解

java.lang.Math是Android开发中常用的数学工具类,提供静态方法实现基础运算(如绝对值、取整、三角函数、指数对数、随机数等)。其核心特性包括无构造方法、平台优化支持以及与StrictMath的区别。常用方法涵盖常量(如PI、E)、取整(ceil/floor/round)、极值(max/min)、三角函数(需弧度转换)、指数对数运算及随机数生成。典型应用场景包括动画坐标计算、传感器数据处理和随机效果生成。使用时需注意浮点数精度问题、参数范围限制及性能优化。

2025-10-27 18:19:10 1073

原创 Android 15 兼容详解

Android 15(API 35)带来多项隐私保护、权限管理和后台限制的变更,开发者需重点适配以下方面:1)新增传感器后台权限(BODY_SENSORS_BACKGROUND),需分步请求;2)收紧后台启动Activity和服务限制,建议改用高优先级通知或WorkManager;3)剪贴板访问和照片元数据获取受限,需调整相关逻辑;4)强制APK v3签名,禁止外部路径动态加载代码。适配时需更新targetSdkVersion至35,使用版本判断兼容新旧系统,并通过全面测试验证权限流程和后台行为。

2025-10-23 17:02:32 1386

原创 Android extractNativeLibs 详解

extractNativeLibs是Android开发中控制原生库(.so文件)安装行为的关键属性,决定APK安装时是否解压.so文件。默认值为true,解压到应用私有目录运行更快但占用更多空间;设为false可减少安装时间和磁盘占用,但需确保.so文件未被压缩。建议大型应用设为false优化体验,小型库保持默认。需注意兼容性(仅API23+有效)和压缩状态检查,通过Gradle插件可自动处理。该属性在平衡安装效率、空间占用和运行性能方面起重要作用。

2025-10-23 16:44:07 861

原创 Android RxJava和Kotlin Flow的使用场景和优缺点

摘要 RxJava的Observable和Kotlin的Flow均用于异步数据流处理,但各有侧重: Observable:成熟生态、丰富操作符,适合Java/Kotlin混合项目及复杂流处理,但需手动管理生命周期,学习成本高。 Flow:轻量简洁,深度集成Kotlin协程与Jetpack,支持自动背压和生命周期管理,但仅限Kotlin,冷流特性需适配热流场景。 选择建议:纯Kotlin项目优先用Flow;混合项目或复杂流操作选Observable。

2025-09-27 16:08:47 817

原创 Android Rxjava使用详解

摘要 RxJava是基于观察者模式的响应式编程库,核心通过异步数据流简化异步操作(如网络请求、UI交互)。其核心角色包括Observable(数据源)、Observer(观察者)、Subscription(订阅关系)和Operator(操作符)。基础用法分为三步:创建Observable(如just、from)、定义Observer处理逻辑、建立订阅关系。

2025-09-27 16:06:44 1000

原创 Android ADB使用详解

ADB(Android Debug Bridge)是Android开发的核心调试工具,支持设备管理、应用安装、文件传输和系统调试等功能。本文提供ADB的详细使用指南,包括环境搭建、基础命令(设备连接、应用管理、文件操作)、高级用法(无线调试、端口转发)以及常见问题解决方案。通过掌握这些命令,开发者可以高效完成Android应用的调试和系统操作,提升开发效率。文章还介绍了日志查看、模拟输入等实用技巧,适合Android开发人员参考使用。

2025-09-18 10:59:48 863

原创 Android String.format 详解

本文详细解析了Android开发中String.format()方法的用法。介绍了其基本语法、格式说明符结构、常用转换符和标志,以及宽度/精度设置。文章还提供了日期格式化示例、参数索引用法和Android实用技巧(如本地化处理和资源文件格式化)。同时指出需要注意参数匹配、类型转换和性能优化问题。最后总结该方法适用于数字/日期格式化、模板填充和国际化处理,建议合理使用以提高代码可读性,但要避免性能敏感场景的过度调用。

2025-07-21 09:22:49 686

原创 Android Spannable详解和工具方法

SpannableString是Android中用于富文本处理的核心类,支持在同一字符串中应用多种样式(颜色、字体、点击事件等)。通过setSpan()方法,可对文本指定区域设置样式,如ForegroundColorSpan(前景色)、StyleSpan(粗体/斜体)、ClickableSpan(点击事件)等。使用时需注意flags参数控制样式作用范围,点击事件需搭配LinkMovementMethod生效。还支持HTML转换(Html.fromHtml()),适用于复杂文本样式需求。

2025-07-16 11:25:56 506

原创 Android InputType详解

Android开发中EditText的inputType属性详解:该属性控制输入类型和软键盘布局,主要分为三类:Class类型(如text、number)、Variation类型(如password、email)和Flags标志(如自动大写)。可通过组合使用优化输入体验,例如textCapWords|textAutoCorrect实现单词首字母自动大写及纠错功能。常用设置包括文本类(普通/密码/邮件)、数字类、电话类等,能有效规范用户输入并提升交互体验。

2025-07-16 10:27:05 2367

原创 android 简单的字符替换加密算法

本文介绍了两种字符替换加密算法的实现方案。第一种是简单字符替换加密,使用固定映射表进行字母和数字的替换加密,并提供了加密解密方法。字母采用反向替换规则(A-Z→Z-A),数字采用自定义乱序替换(0→7,1→9等)。 第二种是扩展的动态替换加密算法,通过引入密钥(key)来动态生成替换表,增强加密强度。该算法使用密钥对基础字符集(大小写字母和数字)进行排列置换,创建动态替换映射表,使得相同明文在不同密钥下产生不同密文。两种方法都强调了仅适用于简单场景,敏感数据应使用标准加密算法(AES/RSA)。

2025-06-17 16:59:56 421

原创 Android GreenDAO 核心方法详解

摘要:GreenDAO 是一个高效的 Android ORM 框架,主要包含五大核心组件:Entity(实体类)、DaoMaster(数据库管理)、DaoSession(会话管理)、DAO(数据访问对象)和 QueryBuilder(查询构建)。实体类通过注解定义表结构,支持主键、索引、关联关系等特性。DaoMaster 负责数据库创建和版本升级,DaoSession 提供事务管理和 DAO 访问。DAO 组件实现完整的 CRUD 操作,而 QueryBuilder 支持条件查询、排序分页等高级功能。该框架

2025-06-17 16:41:01 921

原创 Android中ConstraintSet有什么用?

ConstraintSet是Android中动态修改ConstraintLayout布局约束的强大工具。它支持设置位置约束(如边距、百分比位置)、尺寸约束(固定/百分比尺寸、宽高比)、链属性(水平/垂直链)、辅助属性(Guideline、Barrier)以及动画过渡等。使用方式包括创建ConstraintSet实例、克隆现有约束、修改参数后应用变更。注意事项包括:ID引用、性能优化、动画过渡实现及版本兼容性。该工具特别适用于需要运行时调整布局或实现复杂动画效果的场景,能显著提升界面交互灵活性。

2025-06-14 11:40:36 493

原创 Android布局ConstraintLayout代码修改约束

对于需要适配不同屏幕方向的场景,文章展示了如何在代码中动态修改百分比:通过获取控件的ConstraintLayout.LayoutParams,并根据条件调整matchConstraintPercentHeight值(如竖屏0.6,横屏0.8)。在xml中已知app:layout_constraintHeight_percent,可以设置高度占比。本文介绍了在Android开发中设置控件高度占比的两种方法:XML静态设置和代码动态调整。这两种方法结合使用,可以灵活实现界面布局的自适应需求。

2025-06-14 09:03:36 333

原创 Android 水平or垂直Tablayout

CustomTabLayout是一个自定义的Android标签布局控件,支持水平和垂直两种方向。主要特性包括:1) 可配置标签文本颜色、大小、内边距;2) 支持选中/未选中状态的不同背景;3) 提供可定制的指示器(颜色、高度、宽度);4) 支持自动填充空间或滚动模式;5) 内置触摸事件处理和滑动速度跟踪。该控件通过自定义ViewGroup实现,内部使用LinearLayout管理标签项,并通过属性配置实现丰富的可视化效果,适用于多种导航场景。

2025-05-28 14:47:47 199

原创 【Android】string.xml占位符

在strings.xml中<string name="string_test_1">数字:%1$d ;字符:%2$s ;浮点:%3$.2f</string>在Activity中String testStr = getResources().getString(R.string.string_test_1);String result = String.format(testStr,123,"测试",1.234);System.out.println(result);打

2021-04-08 20:47:18 1015

原创 【Android】多版本控制

【Android】多版本控制开启多版本方式:在app下的build.gradle添加如下设置android {sourceSets { main { manifest.srcFile 'src/main/AndroidManifest.xml' java.srcDirs = ['src/main/java'] resources.srcDirs = ['src/main/resources']

2021-04-08 19:45:15 349 2

谷歌像素字体,VT323-Regular.ttf

谷歌像素字体

2025-12-08

一个有关用于备份的目录源码

一个有关用于备份的目录源码

2025-09-30

空空如也

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

TA关注的人

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