- 博客(165)
- 资源 (5)
- 收藏
- 关注
原创 Android开发(Kotlin) room数据库
本文介绍了Android Room数据库的基本使用和配置方法。主要内容包括:1)Room的三个核心组件(数据库类、数据实体、DAO);2)KSP插件的配置步骤;3)Room的具体实现,包括定义实体类(@Entity)、DAO接口(@Dao)和数据库类(@Database);4)演示了增删改查操作的使用示例;5)注意事项如数据库操作需在子线程执行。最后简要提及了数据库升级的简单处理方式,适合开发测试阶段使用。
2025-11-22 09:00:00
688
原创 Android开发(Kotlin) LiveData的基本了解
本文介绍了Android中LiveData的基本使用及其扩展功能。LiveData可在数据变化时通知观察者,通过ViewModel实现数据持久化。文章演示了MutableLiveData的基本操作、数据观察方式,以及如何通过封装保护数据不变性。此外,还讲解了LiveData的转换操作:map()用于同步数据转换,switchMap()用于异步数据转换(如网络请求),确保只保留最新结果。通过代码示例展示了如何实现用户数据转换和按需获取最新用户信息的功能。
2025-11-21 09:00:00
563
原创 Android开发(Kotlin) LifeCycle的使用
本文介绍了在非Activity组件中感知Activity生命周期的方法。通过实现DefaultLifecycleObserver接口创建MyObserver类,可以监听onCreate、onResume、onStop等生命周期事件。ComponentActivity作为LifecycleOwner,通过getLifecycle()方法实现观察者模式。文中展示了将MyObserver注册到Activity的示例代码,并演示了如何通过传入Lifecycle对象主动获取当前生命周期状态。这种方法实现了组件与Act
2025-11-20 00:24:34
206
原创 Android开发(Kotlin) ViewModel基本用法
本文介绍了Android ViewModel的基本用法和参数传递。首先展示了一个简单的计数器案例,通过ViewModel保存计数状态,确保屏幕旋转后数据不丢失。接着改进该案例,结合SharedPreferences实现应用重启后数据持久化。关键点包括:1)通过ViewModelProvider获取ViewModel实例;2)使用ViewModelProvider.Factory向ViewModel传递初始参数;3)在onPause()中保存数据到SharedPreferences。这种方法有效实现了数据的生
2025-11-19 18:36:44
244
原创 Android开发(Kotlin) 协程
摘要: 协程是一种轻量级线程,可以在单线程中模拟多线程效果,通过挂起和恢复实现任务切换。Kotlin协程使用launch和async创建协程,delay挂起协程,runBlocking阻塞线程确保协程执行完成。suspend关键字声明挂起函数,coroutineScope提供协程作用域。通过Job管理协程生命周期,withContext指定线程调度策略。协程可简化回调,如使用suspendCoroutine将Retrofit网络请求转换为挂起函数,避免回调嵌套,提升代码可读性。
2025-11-17 00:41:39
713
1
原创 Android开发(Kotlin) retrofit基本使用
本文介绍了在Kotlin中使用Retrofit进行网络请求的完整流程。主要包括:1) 添加Retrofit和Gson转换器依赖;2) 创建单例ServiceCreator管理Retrofit实例;3) 定义数据模型类(WordListBean和WordBean);4) 配置网络接口(AppService);5) 发起网络请求并处理响应;6) 使用Kotlin实化类型参数优化ServiceCreator;7) 配置网络权限和网络安全设置以支持HTTP请求。通过详细代码示例展示了从网络请求到数据解析的完整实现过
2025-11-15 01:22:02
189
原创 Android开发(Kotlin) 泛型实化、协变、逆变
本文介绍了Kotlin泛型的两个重要特性:泛型实化和泛型变型。泛型实化通过内联函数和reified关键字实现运行期获取泛型类型,并应用于简化Activity启动流程。泛型变型包括协变和逆变:协变通过out关键字确保类型安全,适用于只读场景;逆变通过in关键字实现类型关系的反转,适用于比较等场景。文中还通过SimpleData、TransFormer等示例说明了具体应用,并解释了Kotlin标准库中List、Comparable接口的相关实现原理。
2025-11-14 09:00:00
876
原创 Android开发(Kotlin) infix函数的基本使用
本文介绍了Kotlin中infix函数的应用。通过定义infix扩展函数String.beginsWith()和Collection<T>.has(),分别实现了更简洁的字符串前缀判断和集合元素包含判断。infix函数必须满足两个条件:作为类的成员函数(可用扩展函数实现),且只能接收一个参数。这种语法糖能使代码更接近自然语言,如"Hello Kotlin" beginsWith "Hello"和list has "banana"的形式。
2025-11-12 09:30:00
174
原创 Android开发(Kotlin) 泛型和委托
本文介绍了Kotlin中的泛型和委托机制。泛型部分包含泛型类和泛型方法的定义方式,以及通过上界限制泛型类型的方法,并展示了如何扩展函数使其适用于所有类。委托部分分为类委托和属性委托:类委托使用"by"关键字简化接口实现;属性委托通过Delegate类实现属性的getter/setter逻辑,文中还演示了如何自定义类似lazy的延迟初始化函数。这些特性可以有效减少样板代码,提高开发效率。
2025-11-10 09:00:00
298
原创 android开发(kotlin) 高阶函数的应用
本文展示了如何利用Kotlin特性简化Android开发中的SharedPreferences和ContentValues使用。对于SharedPreferences,通过高阶函数封装edit操作,使其更简洁直观;对于ContentValues,利用Pair对象和when语句实现了类似Map的初始化方式。文章还介绍了KTX库提供的contentValuesOf()方法,进一步简化了ContentValues的创建。这些技巧充分利用了Kotlin的扩展函数、智能类型转换等特性,使代码更简洁高效。最终实现的代码
2025-11-08 09:30:00
346
原创 Android开发(Kotlin) 高阶函数、内联函数
本文介绍了Kotlin高阶函数的概念和使用方法。高阶函数是指接收函数作为参数或返回函数类型的函数,通过函数类型语法(String,Int)->Unit进行声明。文章展示了如何使用高阶函数实现不同运算逻辑,以及通过lambda表达式简化调用。同时介绍了内联函数的作用和优化原理,包括inline、noinline和crossinline关键字的用法。其中noinline用于排除特定参数的内联,crossinline则确保lambda表达式不会使用return关键字。最后还演示了如何通过扩展函数模拟类似ap
2025-11-07 09:30:00
592
原创 Android开发(Kotlin) 扩展函数和运算符重载
本文介绍了Kotlin中扩展函数和运算符重载的使用。扩展函数允许在不修改类源码的情况下为类添加新功能,语法为"fun ClassName.methodName()",并以String类扩展lettersCount()函数为例说明用法。运算符重载通过operator关键字实现,演示了如何重载plus()函数实现PowerConsumption类的加法运算,并提供了常用运算符的重载函数对照表。最后展示了结合扩展函数和运算符重载,为String类添加times()函数实现字符串乘法功能,使&q
2025-11-06 09:00:00
398
原创 android开发(kotlin) 延迟初始化和密封类
本文介绍了Kotlin中的两个实用特性:延迟初始化和密封类。延迟初始化通过lateinit关键字避免了全局变量的空类型声明和频繁判空问题,同时可用::var.isInitialized检查初始化状态。密封类使用sealed class强制处理所有子类条件分支,优化when表达式逻辑,要求密封类及其子类必须定义在同一文件的顶层位置。这两个特性分别解决了变量初始化和多态类型检查的问题,提高了代码的安全性和可维护性。
2025-11-05 09:00:00
458
原创 android开发(Kotlin) 标准函数与静态方法
Kotlin标准函数with、run和apply的使用总结: with函数:接收对象和lambda参数,在lambda中提供对象上下文,返回最后一行结果。适用于连续调用同一对象方法的情况。 run函数:功能与with相同,但作为对象的扩展函数调用。 apply函数:与run类似,但返回调用对象本身,适合对象初始化场景。 定义静态方法的三种方式: 单例类object companion object伴生对象 顶层方法和@JvmStatic注解 Activity启动优化: 在目标Activity中使用compa
2025-11-04 17:03:00
964
1
原创 android开发(kotlin) Intent的使用、返回数据给上一个activity
本文介绍了Android开发中Intent的两种使用方式:显式Intent和隐式Intent。显式Intent通过指定目标Activity类名实现跳转(如FirstActivity跳转SecondActivity),隐式Intent通过配置intent-filter并匹配action实现跳转(如跳转浏览器或拨号界面)。文章还详细说明了Activity间传递数据的方法,包括使用putExtra()传递数据和registerForActivityResult()接收返回数据,并给出了完整的代码示例。重点涵盖了K
2025-11-04 09:00:00
621
原创 android开发(kotlin)练练手,创建一个activity
本文介绍了Android开发中几个基础功能的实现方法:1. 创建按钮并设置点击事件弹出Toast提示,展示了通过findViewById和ViewBinding两种方式获取控件;2. 使用Menu创建菜单选项并处理点击事件;3. 通过finish()方法销毁Activity。文章提供了详细的Kotlin代码和XML布局示例,并演示了如何在build.gradle中启用ViewBinding功能。这些技术点涵盖了Android应用开发中的基本交互实现方式,适合初学者快速掌握基础组件的事件处理。
2025-11-04 08:30:00
238
原创 kotlin学习 字符串内嵌表达式、参数默认值
Kotlin语言特性摘要: 字符串内嵌表达式使用${}语法,可直接嵌入变量值,如"en is ${word.enContent}"; 函数参数支持默认值,未传参时自动采用默认值,如fun testCreateWord(cn: String = "你好"); 当非首参数需传值而首参数保留默认值时,需使用键值对指定参数名,如testCreateWord(en = "abc")避免歧义。 (摘要字数:149)
2025-11-03 15:15:24
208
原创 kotlin学习 lambda编程
Kotlin集合操作与空指针检查总结 本文介绍了Kotlin中集合操作和空指针检查的相关特性。集合部分包括List、Set、Map的创建方式及函数式API使用,如maxBy、map、filter、any、all等方法。空指针检查方面,Kotlin通过可空类型系统、?.操作符、?:操作符、!!断言和let函数等机制,在编译期进行空指针检查。let函数还能解决全局变量判空问题,相比if判断更具优势。这些特性使Kotlin代码更简洁安全,有效减少空指针异常风险。
2025-11-02 20:49:28
563
原创 kotlin学习 基础知识一览
本文介绍了在Android Studio中使用Kotlin语言的基础知识。主要内容包括:1) 创建Kotlin项目和编写main函数;2) 变量声明(val不可变,var可变)和类型推导;3) 函数定义和语法糖简化;4) 逻辑控制(if条件语句、when条件语句);5) 循环语句(for-in循环和区间操作);6) 类与对象、继承和构造函数(主构造函数和次构造函数)。通过具体代码示例展示了Kotlin的简洁语法特性,如自动类型推导、函数简化表达式等。
2025-11-02 17:22:26
1073
原创 Flutter MVVM+provider的基本示例
Flutter Provider与MVVM架构实践 本文介绍了Flutter中Provider状态管理的基本使用和MVVM架构实现。通过MultiProvider管理多个Provider对象,包括常规对象(Provider)和可观察对象(ChangeNotifierProvider)。演示了三种获取Provider对象的方式:watch(监听变化)、read(直接获取)和select(部分监听)。在MVVM实现部分,展示了Model层定义数据模型和远程仓库,ViewModel层继承ChangeNotifie
2025-08-30 17:27:04
347
原创 Flutter开发 json_serializable json数据解析
本文介绍了如何在Flutter中实现JSON数据的序列化和反序列化。通过json_serializable和json_annotation依赖包,创建Word数据模型类,自动生成转换代码。演示了从服务器获取JSON数据后,如何将其转换为List<Word>对象列表,以及如何将对象列表转回JSON字符串。包括添加依赖、创建模型类、运行代码生成器、实现数据转换等完整流程,便于处理复杂的JSON数据结构。
2025-08-20 17:45:00
449
原创 Flutter开发 网络请求
本文介绍了Dart中的两种HTTP请求方式:原生HttpClient和第三方http库。通过代码示例展示了GET和POST请求的实现,包括请求发送、响应处理和JSON/XML数据解析。GET请求示例展示了如何获取并解析单词数据,POST请求演示了如何设置请求头和发送JSON数据。此外还介绍了XML解析方法,展示了如何从XML文档中提取书籍信息。这些示例覆盖了网络请求的主要场景,为Dart开发者提供了实用的参考实现。
2025-08-16 17:45:00
453
原创 Flutter开发 webview_flutter的基本使用
Flutter实现WebView功能需要使用webview_flutter插件,该插件支持iOS和Android平台。实现步骤包括:1)添加Android网络权限;2)引入webview_flutter插件依赖;3)通过WebViewController配置JavaScript模式、导航委托等参数,可控制页面加载行为和URL拦截;4)使用WebViewWidget展示网页内容。示例代码展示了如何加载指定URL并实现基本功能,包括页面加载事件处理和特定网站(如YouTube)的访问限制。
2025-08-15 18:30:00
437
原创 Flutter Form组件的基本使用
本文介绍了Flutter中Form和TextFormField组件的使用。Form作为容器组件,通过GlobalKey<FormState>管理表单状态,调用validate()方法触发验证,save()方法保存数据。示例代码演示了包含用户名和密码输入框的表单,实现了验证、提交和重置功能。TextFormField通过validator进行输入验证,onSaved保存输入值,结合FormState实现表单数据的统一管理和操作。该方案适用于大多数需要表单验证和数据收集的场景。
2025-08-15 18:00:00
375
原创 Flutter sqflite插件
本文介绍了Flutter中使用sqflite插件进行SQLite数据库操作的方法。主要内容包括:1.获取数据库路径;2.初始化数据库并创建表;3.实现增删改查功能(插入、更新、查询、删除数据);4.处理数据库版本升级;5.直接使用已有db文件的方法。代码示例展示了完整的数据库操作流程,包括创建表、版本升级时添加字段等常见操作,以及如何预加载已存在的数据库文件。
2025-08-14 18:00:00
326
原创 Flutter 顶部导航标签组件Tab + TabBar + TabController
Flutter中实现Tab布局需要配合TabBar、TabBarView和TabController。TabBar定义标题栏,包含isScrollable(可滑动)、indicatorColor(指示器颜色)、labelColor(选中颜色)等属性;TabBarView定义对应内容区域。通过DefaultTabController控制切换逻辑,示例代码展示了包含5个Tab页的完整实现,包括图标、文本和内容区域的配置。关键点在于TabBar和TabBarView的数量必须一致,并由DefaultTabCont
2025-08-14 17:30:00
350
原创 Flutter GridView的基本使用
Flutter GridView组件详解 GridView是Flutter中用于多行多列布局的核心组件,主要包含四种实现方式: GridView():一次性渲染所有子元素,适合固定数量的布局,通过SliverGridDelegate控制排列方式,可设置行列数、间距和宽高比。 GridView.count():直接设置交叉轴子元素数量,简化行列布局。 GridView.extent():通过设置子元素最大宽度来自动计算列数。 GridView.builder():动态创建子元素,适合大数据量或不确定数量的场景
2025-08-12 18:00:00
390
原创 Flutter path_provider的基本使用(读写文件)
本文介绍了Flutter中使用path_provider插件进行跨平台文件目录操作的方法。该插件可以获取临时目录、文档目录和外部存储目录,适用于Android和iOS平台。内容包括:添加依赖配置,获取各类目录路径的方法实现,以及创建、删除目录和获取目录内容的代码示例。特别说明了Android平台需要额外配置存储权限。通过封装Dart函数,开发者可以方便地进行文件系统操作,解决了不同平台文件路径差异问题。
2025-08-12 17:15:00
291
原创 Flutter ExpansionPanel组件(可收缩的列表)
摘要:本文介绍了Flutter中可展开/收缩的面板组件实现方法,主要使用ExpansionPanelList和ExpansionPanel组件。ExpansionPanelList通过children属性设置子组件,expansionCallback处理展开回调;ExpansionPanel则通过headerBuilder设置标题,body定义内容区域,isExpanded控制展开状态。代码示例展示了如何构建一个包含多个卡片内容的面板组件,其中body使用Container设置固定高度,并通过ListVie
2025-08-12 16:45:00
214
原创 Flutter card组件的基本使用
本文介绍了Card小部件的使用,它具有圆角和阴影效果,能呈现立体视觉。主要属性包括margin(外边距)、child(子元素)和shape(阴影样式,默认圆角长方形)。示例代码展示了如何创建包含多个Card的列表视图,每个Card包含ListTile显示时间信息。通过Container设置内边距,将多个相同样式的Card添加到列表中,最终在Scaffold的body中通过ListView展示。这种实现方式适合创建整齐的卡片式列表界面。
2025-08-11 18:00:00
3109
原创 Flutter Dialog、BottomSheet
本文介绍了Flutter中四种常用弹窗的实现方式:1) AlertDialog基础弹窗,包含标题、内容和操作按钮;2) SimpleDialog选择弹窗,提供多个选项供用户选择;3) AboutDialog信息弹窗,展示应用名称、版本和版权信息;4) BottomSheet底部弹窗,以列表形式从底部弹出选项。每种弹窗均提供Dart代码示例和效果截图,展示了从创建到调用的完整实现过程,适合Flutter开发者快速掌握对话框组件的使用方法。
2025-08-11 17:30:00
274
原创 Flutter SharedPreferences存储数据基本使用
Flutter中使用SharedPreferences实现数据持久化存储的示例。通过添加shared_preferences插件,演示了异步存储、读取和删除数据的基本操作。关键点包括:使用SharedPreferences.getInstance()获取实例,通过setString()存储数据、getString()读取数据、remove()删除数据。代码提供了三个按钮分别实现数据存储、读取和删除功能,控制台输出操作结果。该方案适合存储简单的键值对数据,操作需在异步环境中完成。
2025-08-11 17:00:00
315
原创 Flutter开发 LinearProgressIndicato、CircularProgressIndicator
Flutter提供了两种进度指示器组件:LinearProgressIndicator(线性进度条)和CircularProgressIndicator(圆形进度条)。LinearProgressIndicator支持设置背景色(backgroundColor)、进度值(value)和进度颜色(valueColor),value为null时显示动态加载效果。CircularProgressIndicator同样支持value属性,并可设置strokeWidth调整线条粗细。两种组件都可用于展示下载、上传等任
2025-08-10 16:27:09
200
原创 Flutter开发 页面间的值传递示例
本文实现了一个Flutter视频播放应用,包含两个Dart文件:jump.dart作为跳转页面,chewie.dart作为视频播放页面。jump.dart页面包含两个按钮,分别传递不同的视频URL给chewie.dart页面。chewie.dart使用Chewie插件实现视频播放功能,通过构造方法接收URL参数并初始化播放器。跳转页面支持两种不同视频源的切换播放,视频播放页面配置了自动播放和16:9的宽高比。整个应用采用MaterialApp设计,包含基本的页面导航和状态管理功能。
2025-08-10 16:25:51
191
原创 Flutter 视频播放video_player、chewie
Flutter视频播放功能实现方案对比 本文介绍了两种Flutter视频播放实现方案:官方video_player插件和第三方chewie插件。video_player提供了基础的视频播放功能,需要手动实现播放控制按钮;而chewie在video_player基础上封装了控制栏、全屏显示等增强功能,使用更简便。两种方案都支持网络视频播放,通过VideoPlayerController进行初始化控制。代码示例展示了两种实现方式的具体用法,开发者可根据项目需求选择适合的方案。
2025-08-09 19:45:00
338
原创 Flutter Listview的基本使用
本文介绍了Flutter中ListView组件的三种使用方式:1) 基础ListView(),支持垂直/水平滚动,可配置滚动方向、翻转、子元素尺寸等属性;2) ListView.builder(),适用于动态数据加载场景,通过itemCount控制显示条数,示例演示了点击加载更多功能;3) ListView.separated(),支持在列表项之间添加自定义分割线。每种方式均提供Dart代码实现和效果图示,展示了如何创建彩色列表项容器,并涵盖随机颜色生成、状态管理等实用技巧。
2025-08-09 19:30:00
215
原创 Flutter开发 SingleChildScrollView、ScrollController
本文介绍了Flutter中SingleChildScrollView组件的使用,通过代码示例展示了如何实现图片的水平滑动效果。主要内容包括:1)使用SingleChildScrollView和Row构建可横向滑动的图片列表;2)通过ScrollController控制滚动位置,实现点击按钮切换图片的功能;3)列举了ScrollController的常用属性和方法。文章提供了完整的Dart代码实现,并配有界面效果图,帮助开发者快速掌握Flutter滑动组件的开发技巧。
2025-08-08 19:30:00
293
原创 Flutter开发 多孩子布局组件
Flutter布局组件使用指南:本文介绍了Flutter中常用的布局组件及其属性配置。主要内容包括:1) Row水平排列组件的主轴(MainAxisAlignment)和次轴(CrossAxisAlignment)对齐方式;2) Column垂直排列组件;3) Flex组件作为Row和Column的组合;4) Expanded组件用于扩展子元素尺寸;5) Warp组件实现自动换行;6) Stack组件实现子元素堆叠效果。每种组件都配有示例代码和效果截图,展示了不同的对齐方式(spaceAround、cent
2025-08-08 19:00:00
435
原创 Flutter开发 单孩子布局组件
本文介绍了Flutter中常用的布局组件Container、Padding、Align和Center的使用方法。Container是一个多功能布局组件,支持设置对齐方式、装饰效果、尺寸调整和变换操作。Padding组件用于设置内边距,Align组件控制子元素的对齐方式,Center组件则简单实现居中效果。每个组件都配有示例代码和效果截图,展示了如何设置背景色、边框、圆角、图片等属性,以及如何调整宽高、对齐方式和旋转等变换操作。这些基础组件是Flutter界面开发的重要组成部分。
2025-08-07 17:45:00
200
Android Fragment+限定符适配Demo
2017-10-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅