自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Android】录制视频

摘要 本文介绍了Android相机视频录制功能的实现过程,主要包含UI设计和Activity代码两部分。UI采用ConstraintLayout布局,包含预览视图、录制按钮和摄像头切换按钮。Activity代码实现了CameraX库的初始化、相机预览配置、视频录制控制等功能。核心逻辑包括:使用ProcessCameraProvider管理相机生命周期,通过Recorder和VideoCapture实现视频录制,利用线程池处理录制回调事件,并实现了开始/停止录制、摄像头切换等交互功能。

2025-09-22 12:03:56 1027

原创 【Android】Jectpack CameraX实现拍照功能

摘要:本文介绍了Android相机开发中CameraX库的使用方法,包括功能特性、依赖配置、权限声明和具体实现步骤。CameraX作为官方推荐的相机解决方案,相比Camera2具有更简单的API、更好的兼容性和生命周期管理能力。文章详细展示了相机预览界面布局设计,并提供了核心代码实现,涵盖权限申请、相机初始化、拍照功能等关键环节,帮助开发者快速集成相机功能。

2025-09-22 12:02:24 1449

原创 【Android】Jetpack Media3 如何播放音频文件 && 实现视频播放器

Android Jetpack Media3 音视频播放器实现摘要 本文介绍了使用Jetpack Media3实现音乐播放器的完整流程。首先添加了必要的依赖库和网络权限,然后设计了包含播放控制按钮、进度条和时间显示的UI界面。在代码实现部分,通过初始化ExoPlayer播放器并设置监听器,实现了播放/暂停/停止等基本功能。特别处理了SeekBar进度同步,实现了用户拖动进度条时的音乐跳转功能。整个播放器采用ConstraintLayout布局,确保控件对齐和响应式设计

2025-09-18 12:09:08 1266

原创 【Android】Jetpack Media3 播放音频文件

本文介绍了使用Jetpack Media3实现Android音乐播放器的方法。主要内容包括:1)添加Media3依赖和网络权限配置;2)设计播放器界面,使用ConstraintLayout布局实现进度条与时间显示的水平对齐;3)通过设置按钮监听器实现播放控制功能,包括准备媒体资源、播放、暂停和停止操作;4)SeekBar进度条与音乐播放同步,支持用户拖动进度跳转。文章提供了完整的XML布局代码和核心功能实现思路,适合Android开发者快速构建音乐播放功能。

2025-09-17 21:41:06 1280 1

原创 【Android】进程间如何通信

Content Provider是Android应用间共享数据的机制,通过继承ContentProvider类并重写关键方法实现数据操作。创建MyContentProvider类,包含数据库初始化(onCreate)和CRUD方法(query、insert、update、delete);方法参数分析:query方法接收查询条件和排序参数;getType返回MIME类型标识数据格式

2025-09-17 21:32:37 825

原创 【Android】公共存储空间的数据写入&读取(相册读取所有图片)

本文介绍了Android外部存储权限管理的发展历程及MediaStore API的使用要点。从Android 6.0引入动态权限管理,到Android 10的分区存储机制,再到Android 13的精细化媒体权限管理,系统权限控制逐步加强。文章重点讲解了MediaStore访问媒体文件所需的权限声明方式和动态权限申请方法,并通过一个下载图片到公共存储空间的示例代码,详细说明了如何使用ContentResolver插入数据到系统媒体库。示例涉及ContentValues参数设置、文件流操作等关键实现步骤

2025-09-09 11:50:49 1800

原创 【Android】如何将网络文件保存到本地

通过OkHttp下载网络图片并保存到私有存储的实现方法。如何使用InputStream读取网络响应数据,并通过FileOutputStream写入到应用的外部文档目录。分析流操作原理,包括字节流处理、缓冲区使用和强制刷新机制。总结了常见流类型,对比字节流和字符流,效果图展示了图片成功保存后的文件路径位置。

2025-09-09 11:47:54 831

原创 【Android】内外部存储的读写

本文介绍了Android中文件存储的三种位置:内部私有存储(加密且仅应用可访问)、外部私有存储(其他应用可授权访问)以及公共存储空间(所有应用可访问)。重点演示了将应用数据写入内部私有存储的实现步骤,包括布局设计、使用缓冲输出流高效写入文件,以及自动资源管理机制。文章还解释了输入/输出流的概念区分,强调程序与文件间的数据流向关系,并说明了字符与字节在存储转换中的处理逻辑。

2025-09-07 16:49:10 1202

原创 【Android】Room数据库的使用

Room是Android Jetpack中封装SQLite的ORM库,通过对象化操作简化数据库开发。

2025-09-05 13:26:42 1457

原创 【Android】SQLite使用——增删查改

创建数据库:通过继承SQLiteOpenHelper类,重写onCreate()方法执行建表SQL语句,管理数据库版本。插入数据:使用ContentValues封装数据,通过getWritableDatabase()获取可写数据库对象,调用insert()方法实现数据添加。查询数据:通过query()方法执行条件查询,返回Cursor对象遍历结果集,将数据转换为Java对象集合。注意事项:数据库操作应放在子线程执行避免主线程阻塞,查询条件支持参数绑定防止SQL注入。

2025-09-05 13:21:28 903

原创 【Android】SharedPreferences轻量级持久化存储

Android提供了多种数据存储方式,其中SharedPreferences(SP)是一种轻量级的键值对存储机制,适合保存用户偏好设置和小型数据。SP支持多种数据类型,提供同步(commit)和异步(apply)提交方式,数据存储在应用私有目录的XML文件中(如data/data/包名/shared_prefs/)。通过示例展示了SP的增删改查操作,包括保存用户信息、获取数据和删除数据。使用时需注意提交方式的选择(推荐apply避免主线程阻塞)和获取数据的时机。SP适合存储少量简单数据

2025-09-03 10:35:25 689

原创 【Android】Handler工作原理 && HandlerThread用法

Handler在多线程通信,Handler通过Message、MessageQueue、Looper和Handler四大组件实现线程间通信,为解决线程重复启动问题,HandlerThread封装了Looper.prepare()和Looper.loop()逻辑,使单个线程可处理多个任务。HandlerThread如何在不同线程间传递任务结果,并分析了其内部synchronized同步机制保证线程安全的原理。最终实现后台线程执行耗时任务后,通过主线程Handler更新UI的效果。

2025-09-03 10:27:52 1126

原创 【Android】使用Handler做多个线程之间的通信

Android中Handler的线程通信机制,分析了四种Handler使用场景:1)主线程Handler更新UI;2)子线程Handler不传Looper导致UI更新失败;3)子线程设置Looper实现消息处理;4)子线程使用主线程Looper更新UI。文章还解析了Looper.prepare()、Looper.myLooper()和Looper.loop()的核心作用,并通过示例演示了多线程通信和延迟消息发送的实现。关键点在于理解Handler与Looper的绑定关系,以及如何通过消息队列实现跨线程通信

2025-09-01 09:30:28 1154

原创 【Android】Retrofit2发起GET请求 && POST请求

Retrofit2简介:①由Square公司开发,基于OkHttp的网络请求库②简化RESTful API调用和响应数据解析流程③需要添加相关依赖库接口定义:①通过注解方式定义网络请求接口②支持GET/POST请求方式③自动处理参数传递和结果转换④与服务端返回的JSON数据结构对应具体实现①GET请求示例:构建Retrofit实例,添加转换器,定义接口并异步调用②POST请求示例:类似GET流程,支持请求体参数③通过动态代理技术自动生成接口实现类④内置Gson转换器简化JSON处理

2025-09-01 09:25:31 1014

原创 【Android】OkHttp发起GET请求 && POST请求

OkHttp是一个高效的HTTP客户端库,本文介绍了GET和POST请求的实现步骤:关键点:①使用Builder模式创建对象②异步请求通过回调处理结果③响应内容需通过string()方法获取④涉及UI操作需切换到主线程

2025-08-30 17:44:31 1237

原创 【Android】JSONObject和Gson的使用

Android开发中处理JSON数据的两种方法:JSONObject和Gson。首先展示了JSON的标准格式,然后详细说明如何使用JSONObject创建和解析JSON数据,包括基本键值对、嵌套对象和数组的处理。接着介绍了Gson库的使用方法,包括添加依赖、将Java对象转为JSON字符串以及从JSON字符串还原Java对象。两种方式各有特点,JSONObject更原生直接,而Gson通过对象映射提供了更简洁的API。

2025-08-30 17:29:08 1076

原创 【Android】安卓原生态发起网络GET请求 && Post请求

针对HTTP明文传输需要解决的三个关键问题:1)清单文件声明网络权限;2)配置网络安全策略允许明文传输;3)避免在主线程进行网络操作。文章提供了详细的代码示例,包括URL构建、请求参数拼接、输入流处理等核心环节,并特别说明了Android 9.0+系统中允许HTTP请求的两种配置方法(网络安全配置文件和全局设置)。最后强调了子线程处理网络请求的重要性,以避免UI卡顿

2025-08-27 11:16:34 1143

原创 【Android】不同系统API版本_如何进行兼容性配置

本文介绍了Android应用中需要手动授予的系统权限及其实现方法,包括应用安装权限、悬浮窗权限等高风险权限的申请流程。重点讲解了如何通过canRequestPackageInstalls()方法检查应用安装权限,并针对不同Android版本进行兼容处理。文章还提供了从应用跳转到系统设置界面的代码示例,以及使用ActivityResultLauncher处理权限请求结果的最佳实践。这些权限涉及用户隐私和系统安全,开发者需遵循Android权限机制,确保在获得用户明确授权后才能使用相关功能。

2025-08-26 11:17:58 1102

原创 【Android】动态获取权限 && 通过Launcher和回调接口实现权限申请

本文介绍了Android应用开发中的权限管理机制。主要内容包括:1)普通权限(安装时自动授予,如网络、振动等);2)运行时权限(需动态申请,如定位、存储、相机等敏感权限);3)特殊权限(需跳转系统设置手动授权,如悬浮窗、安装APK等)。文章详细列举了各类权限对应的声明代码,并提供了权限申请的代码示例,包括检查权限状态、请求权限以及处理授权结果的完整流程。特别针对Android 13的存储权限变化进行了说明,强调了对不同权限类型的差异化处理方式。

2025-08-26 11:14:47 894

原创 【Android】ViewPager2与Fragment的组合

实现类似抖音界面的滑动切换功能;RadioGroup和ViewPager2的联动,OnCheckedChangeListener和OnPageChangeCallback实现RadioGroup与ViewPager2的双向绑定。

2025-08-25 11:38:49 798

原创 【Android】Activity和Fragment之间的通讯

Activity向Fragment传递数据两种方式:通过Bundle传递初始数据:①在Activity中使用Bundle封装数据②通过setArguments()将Bundle传递给Fragment③Fragment在onCreate()中通过getArguments()获取数据。二:通过方法调用直接传递数据;①在Fragment中定义setMobile()公共方法②Activity中获取Fragment实例并直接调用该方法传递数据

2025-08-25 11:34:23 998

原创 【Android】Fragment生命周期详解

本文总结了Fragment的生命周期方法及其功能,包括onAttach、onCreate、onCreateView等关键回调。通过官方生命周期图和个人整理的表格,详细说明了每个方法对应的阶段和作用,例如onAttach用于获取Activity引用,onCreateView用于创建视图等。文章还提供了示例代码,展示了一个简单的Fragment实现,其中包含视图初始化和点击事件处理。通过日志输出验证了各生命周期方法的调用顺序。

2025-08-23 11:54:15 1428

原创 【Android】使用FragmentManager动态添加片段

动态管理Fragment的核心操作,包括添加、移除和替换:1)通过FragmentTransaction实现动态添加(add)、移除(remove)和替换(replace)操作;2)三种Fragment移除方式的对比,推荐使用id移除法;3)使用getSupportFragmentManager()获取Fragment管理器;4)事务处理注意事项,强调每次操作后必须commit。通过示例代码演示了如何实现一个包含红蓝Fragment切换的界面,并指出动态管理相比静态XML布局的优势在于灵活性。

2025-08-23 11:49:06 659

原创 【Android】include复用布局 && 在xml中静态添加Fragment

布局复用的两种方式:include标签和Fragment,如何使用include标签复用布局文件,Fragment如何创建、布局关联和逻辑处理方法

2025-08-22 12:05:30 886

原创 【Android】Activity的启动模式详解

Android五大Activity启动模式:standard(默认新建实例)、singleTop(栈顶复用)、singleTask(全局栈内唯一)、singleInstance(独占独立栈)和singleInstancePerTask(多窗口适配)

2025-08-22 11:59:26 1312

原创 【Android】屏幕翻转导致数据丢失解决方案——数据持久化

屏幕翻转导致数据丢失解决方案——固定屏幕方向、配置变化处理、数据持久化保存,onSaveInstanceState保存数据并在onCreate或onRestoreInstanceState中恢复数据

2025-08-21 09:43:37 481

原创 【Android】Activity生命周期

Android Activity生命周期详解:onCreate(初始化)、onStart(可见)、onResume(可交互)、onPause(部分遮挡)、onStop(完全不可见)、onDestroy(销毁)

2025-08-21 09:37:51 1184

原创 【Android】Serializable和Parcelable序列化对象:传递自定义类数据

Serializable是Java标准接口,通过实现该接口即可实现对象序列化传输;Parcelable是Android专用接口,需实现writeToParcel打包方法和CREATOR拆包方法

2025-08-20 12:36:47 872

原创 【Android】Activity 如何进行数据传输

数据传输:通过Intent的putExtra()方法携带数据跳转到目标Activity,使用getStringExtra()获取传递的数据并显示。数据回传:使用startActivityForResult()启动目标Activity,在目标Activity中通过setResult()设置返回数据和结果码,最后在源Activity的onActivityResult()中接收处理回传数据。

2025-08-20 12:30:25 732

原创 【Android】Activity创建、显式和隐式跳转、清单文件声明

Activity创建、主入口Activity需配置MAIN和LAUNCHER的intent-filter,OnClickListener接口处理多按钮点击,显式跳转:直接指定目标Activity类;隐式跳转:通过action和category配置;exported属性

2025-08-17 12:04:58 1215

原创 【Android】网络布局 && 瀑布流布局

使用RecyclerView实现网格布局;通过GridLayoutManager设置3列布局,GridAdapter适配器加载图片数据,适配器编写中ViewHolder的绑定处理

2025-08-17 11:59:08 1119

原创 【算法】——力扣hot100常用算法技巧

hash.getOrDefault(key2,自定义值)在表里查找是否存在key2这个关键字,若存在返回key2所对应的value,不存在返回自定义的值注:不能尾追++,一般采用hash.getOrDefault(key2,0)+1。

2025-08-16 19:40:21 1027

原创 【Android】RecyclerView复用CheckBox的异常状态

RecyclerView中ViewHolder复用导致的CheckBox状态错乱问题。当勾选2、4项后滑动列表,新出现的项会被错误勾选,原因是ViewHolder复用导致状态绑定错误,通过onBindViewHolder()方法将CheckBox状态与数据绑定,并在ViewHolder中设置监听器实时更新check属性值。

2025-08-14 16:45:55 507

原创 【Android】适配器与外部事件的交互

RecyclerView交互功能,在ViewHolder中针对特定控件设置点击监听,remove和notifyItemRemoved方法实现动态移除广告项,定义ArticleItemCallBack接口统一处理各类交互事件

2025-08-14 11:48:02 842

原创 【Android】四种不同类型的ViewHolder的xml布局

广告样式、单张图片布局和双图布局三种ViewHolder布局实现;每种布局都使用ConstraintLayout实现响应式设计;

2025-08-13 12:36:00 1122

原创 【Android】RecyclerView多布局展示案例

RecyclerView中实现多类型Item布局;getItemViewType()根据数据返回不同布局类型,onCreateViewHolder()中创建对应ViewHolder;onBindViewHolder()数据绑定

2025-08-13 12:31:33 999

原创 【Android】RecyclerView循环视图(2)——动态加载数据

ViewHolder中找控件、在Adapter中添加动态数据、BindViewHolder中position分析、getItemCount、模拟数据滞后加载场景、notifyDataSetChanged、notifyItemChanged

2025-08-03 11:35:57 1168

原创 【Android】RecyclerView实现新闻列表布局(1)适配器使用相关问题

使用RecyclerView实现新闻列表布局、RecyclerView依赖、Adapter的实现、RecyclerView.Adapter、onCreateViewHolder、onBindViewHolder、getItemCount

2025-08-02 19:57:58 4116

原创 【Android】进度条ProgressBar && 可拖拽进度条Seekbar

ProgressBar:环形进度条、水平进度条;indeterminate不确定模式,secondaryProgress二级进度;实时更新界面显示当前下载百分比。

2025-08-02 19:48:59 1741

原创 【Android】PopupWindow实现长按菜单

实现效果:长按消息时会在指定位置弹出操作菜单,提供复制、翻译、转发等选项。该方案适用于聊天界面等需要上下文操作的场景。

2025-07-31 15:59:03 1075

空空如也

空空如也

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

TA关注的人

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