自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Android】Compose状态

对于更复杂的数据类型,你可以创建自定义的Saver来定义如何序列化和反序列化状态。这允许你保存几乎任何类型的对象。

2024-12-12 15:34:16 1063

原创 【Android】Compose布局

自定义的 Modifier 扩展函数 firstBaselineToTop,以及一个使用该 Modifier 的 Composable 函数 TextWithPaddingToBaseline。// 测量元素,并根据提供的约束条件获取其尺寸信息。// 获取文本内容的第一行基线距离顶部的距离。// 这个值用于计算文本相对于父容器顶部的位置。// 计算新的Y坐标,确保文本的第一行基线距离顶部为指定的Dp值。// 如果文本的第一行基线已经比指定的Dp值大,则placeableY将会是一个负数,

2024-12-11 13:46:19 622

原创 【Android】Compose初识

在Compose中,一个组合可以被视为一系列的可组合函数调用,这些函数共同描述了应用的UI。声明式UI(Declarative User Interface)是一种用户界面编程范式,它允许开发者以声明的方式描述用户界面的结构和行为,而不是详细地指定如何实现这些行为。这种方式简化了UI代码的编写和维护,因为它减少了手动操作DOM或视图层级的需要,同时使得UI逻辑更加直观易懂。Jetpack Compose是谷歌开发的一个现代的、声明式的UI工具包,用于构建原生的Android应用程序界面。

2024-12-05 22:46:08 2318

原创 【Android】Service

是一个可以在后台长时间运行的组件,用于执行耗时操作或执行那些不需要与用户界面直接交互的任务。的方法,但它们的使用场景和行为有所不同。不依赖于用户界面,即使用户切换到其他应用,在Android开发中,在 Android 中,

2024-11-03 21:52:11 1319

原创 【Android】Activity组件通信

在MVVM架构中,ViewModel可以用来在多个Activity或Fragment之间共享数据。ViewModel的生命周期与Activity或Fragment的生命周期独立,因此它可以保留数据,即使Activity或Fragment被重新创建。在Android中,Activity之间的通信是一个常见且重要的任务。这是最常见的方式,适用于从一个Activity向另一个Activity传递数据。当需要从一个Activity启动另一个Activity,并期望从后者返回结果时,可以使用。方法来处理返回的结果。

2024-11-03 20:30:13 663

原创 【Android】Kotlin教程(7)

总结:Kotin这门语言是谁设计的,语法很辣鸡,纯属是为了造门语言而造语言。

2024-10-28 12:40:59 1600 1

原创 【Android】Kotlin教程(6)

扩展函数允许你为现有的类添加新的功能,而无需修改该类的源代码。这使得你可以向库中的类或第三方库中的类添加自定义方法,从而增强其功能。扩展函数在使用时看起来就像它们是原始类的一部分一样。定义扩展函数:要定义一个扩展函数,你需要在函数名前面指定接收者类型(即你要扩展的类),并在接收者类型和函数名之间使用点号 .。接收者类型的实例将作为隐式的第一个参数传递给扩展函数。val tmp = this[index1] // “this”对应该列表。

2024-10-27 21:32:06 929

原创 【Android】Kotlin教程(5)

密封类(Sealed Class)是 Kotlin 中的一种特殊类,它用来表示受限的类层次结构。这意味着密封类的所有直接子类都必须在同一个文件中定义,或者作为密封类的嵌套类来定义。如果一个类只对另一个类有用,那么将其嵌入到该类中并使这两个类保持在一起是合乎逻辑的,可以使用嵌套类。object 表达式还可以用来创建一个临时的对象实例,这个对象可以继承自某个类或实现某个接口。如果要将内置运算符应用在自定类身上,必须重写运算符函数,告诉编译器该如何操作自定义类。枚举类,用来定义常量集合的一种特殊类。

2024-10-27 10:51:28 1183

原创 【Android】Kotlin教程(4)

在People类的定义头中定义一个主构造函数,使用临时变量为Player的各个属性提供初始值,在Kotlin中,为了便于识别临时变量通常都会以。延迟初始化并不是初始化的唯一方式,你也可以暂时不初始化某个变量,知道首次使用它,叫做惰性初始化。定义构造函数时,可以给构造函数指定默认值,如果用户调用时不提供值参,就是用这个默认值。初始化块可以设置变量或值,以及执行有效性检查,如检查传给某构造函数的值是否有效,除了主构造函数还有次构造函数,我们可以定义多个次构造函数来配置不同的参数组合。

2024-10-26 15:36:57 1089

原创 【Android】Kotlin教程(3)

Kotlin中提供了各种Array,虽然是引用类型,但是可以编译成Java基本数据类型。通过setOf创建set集合,使用elementAt函数读取集合中的元素。在Kotlin中,支持内容修改的列表叫可变列表,要创建可变列表,可以使用。通过MutableSetOf创建可变的set集合。函数动态实现只读列表和可变列表的相互转换。使用 with 和 apply 函数。通过_符号过滤不想要的元素。

2024-10-26 11:00:56 994

原创 【Android】Kotlin教程(2)

是一个作用于对象的范围函数(scope function),它允许你在给定的对象上执行一段代码块,并且在这个代码块中可以访问该对象。run 是一个作用域函数(scope function),它允许你在对象的上下文中执行一段代码块,并且可以返回该代码块的结果。split函数返回的是List集合数据,List集合又支持结构语法特性,它允许你在一个表达式里给多个变量赋值,解构常用来简化变量的赋值。需要显式地传递一个接收者对象,并且它返回的是 lambda 表达式的最后一个表达式的值,而不是接收者对象本身。

2024-10-26 09:58:39 1637

原创 【Android】Kotlin教程(1)

和具名函数一样,匿名函数可以不带参数,也可以带一个或者多个任何类型的参数,需要带参数时,参数的类型放在匿名函数的类型定义中,参数名则放在函数定义中。在Kotlin中,匿名函数能修改并引用定义在自己作用域之外的变量,匿名函数引用着定义自身的函数里的变量,在Kotlin中的lambda就是闭包。定义参数是函数的函数,如果一个函数的lambda参数排在最后,或者是唯一参数,那么括住lambda值参的一对圆括号可以省略。函数类型也是有效的返回类型,也就是说可以定义一个能返回函数的函数。

2024-10-25 12:32:57 1566

原创 【Android】自定义EditText

在有些时候,我们需要一些特殊的控件,比如EditText要具有整行下划线。我们通过重写EditText来实现。

2024-10-24 11:30:07 292

原创 【Android】自定义ViewGroup制作标签云TagCloud

我们通过重写ViewGroup来制作标签云。

2024-10-24 11:29:39 246

原创 【Android】Android动画

在res文件夹下创建animator文件夹,创建。在drawable文件夹中定义。通过在anim文件夹创建。通过在anim文件夹创建。通过在anim文件夹创建。通过在anim文件夹创建。

2024-10-24 11:29:22 157

原创 【数据结构】队列和栈相互实现

这种设计利用了队列的先进先出(FIFO)特性来模拟栈的后进先出(LIFO)行为。通过在每次插入时将所有元素转移到另一个队列中,可以保证新插入的元素始终位于队列的前端,从而实现了栈的功能。这个类使用两个栈来模拟队列的行为,其中一个栈用于入队操作(inStack),另一个栈用于出队操作(outStack)。这个类使用两个队列来模拟栈的行为,其中一个队列用于主要操作(queue1),另一个队列作为辅助(queue2)。这种设计利用了栈的后进先出(LIFO)特性来实现队列的FIFO行为。

2024-10-24 09:50:54 1065 1

原创 Arthas线上问题诊断工具

是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。重置增强类,将被 Arthas 增强过的类全部还原,Arthas 服务端stop时会重置所有增强过的类。history 指令可以查看当前 arthas 服务器的所有历史命令,而不仅只是当前次会话使用过的命令。查看当前会话的信息,显示当前绑定的 pid 以及会话 id。

2024-10-15 09:19:43 1120

原创 快速安装JDK

这个命令会安装名为"java-1.8.0-openjdk.x86_64"的软件包,这是一个OpenJDK 8版本的Java开发工具包(JDK)。-y选项同样表示自动回答yes,即在安装过程中不需要用户确认。这个命令会列出所有与"java"相关的软件包,包括已安装的和可用的。-y选项表示自动回答yes,即在安装过程中不需要用户确认。这个命令用于显示当前系统中安装的Java版本信息。如何快速安装JDK环境(Linux)

2024-10-14 20:10:54 211

原创 【Android】Jetpack-Room

是Android Jetpack中的一个组件,它提供了一个抽象层,帮助开发者在本地数据库(如SQLite)上进行持久化数据存储。Room通过简化数据库操作,使得数据管理变得更加容易和高效。在Android开发中,使用DAO(Data Access Object)、Repository和ViewModel的架构模式是为了实现数据与界面的清晰分离,提高应用的可维护性和扩展性。4.定义StudentRepository。5.定义StudentViewModel。3.定义MyDatabase。

2024-10-14 17:06:37 465

原创 【Android】Jetpack-ViewModel+LiveData+DataBinding

LiveData是Android架构组件中的一部分,用于在数据源和UI之间建立连接,实现数据的实时更新和同步。它允许观察者(例如Activity或Fragment)订阅数据变化,并在数据发生变化时自动更新UI。Android DataBinding是Google在Jetpack中推出的一款数据绑定的支持库,它通过将数据源直接与UI元素进行绑定来实现数据与视图之间的自动更新。

2024-10-10 22:23:22 1084 4

原创 【Android】Jetpack-LifeCycle

【代码】Jetpack-LifeCycle。

2024-10-10 20:53:59 221

原创 【Android】Jetpack-ObservableField实现双向绑定

是Android Data Binding库中的一个类,用于实现双向绑定。双向绑定意味着当数据模型中的数据发生变化时,UI会自动更新;同时,当用户在UI上进行操作时,数据模型也会相应地更新。3.在你的布局文件中使用标签包裹你的布局,并使用标签引用ViewModel。1.在你的项目中添加Data Binding依赖。4.在你的Activity或Fragment中设置ViewModel和布局。2.创建一个包含ObservableField的ViewModel类。

2024-10-10 20:51:44 525

原创 【Android】Android内容共享

Android系统为了防止某些App滥用权限,从6.0开始引入了运行时权限管理机制,允许App在运行过程中动态检查是否拥有某项权限,一旦发现缺少某种必须的权限,则系统会自动弹出小窗提醒用户去开启该权限。利用ContentProvider只实现服务端App数据封装,如果客户端App想访问对方内部数据,就要通过内容解析器ContentResolver访问。ContentProvider为App存取内部数据提供统一的外部接口,让不同的应用之间得以共享数据。请求系统弹窗,以便用户选择是否开启权限。

2024-10-06 14:14:16 424

原创 【Android】Android广播

为了避免横竖屏切换时重新加载界面的情况,Android设计了一种配置变更机制,在指定的环境配置发生变更之时,无需重启活动页面,只需执行特定的变更行为。getSubtype:获取网络的子类型。如果为数据连接时,子类型为2G/3G/4G等细分。getTypeName:获取网络类型名称。getType:获取网络类型。

2024-10-06 10:09:52 1500

原创 【Android】Android高级控件

文章目录1.下拉列表Spinner1.数组适配器ArrayAdapter2.简单适配器SimpleAdapter3.基本适配器BaseAdapter2.列表视图ListView3.网格视图GridView4.翻页视图ViewPager5.翻页标签栏pagerTabStrip6.ViewPager实现引导页7.碎片Fragment1.Fragment静态注册2.Fragment生命周期3.Fragment动态注册1.下拉列表Spinner1.数组适配器ArrayAdapter最简单的适配器,只展示一行文

2024-10-05 21:26:43 1358

原创 【Android】Android数据存储

Room是谷歌公司推出的数据库处理框架,该框架同样基于SQLite,但它通过注解技术极大简化了数据库操作,减少了原来相当一部分工作量。Android把外部存储分成了两块区域,一块是所有应用均可访问的公共空间,另一块是只有应用自己才可访问的私有空间。实际开发中,共享参数经常存储的数据有App的个性化配置信息、用户使用App的行为信息、临时需要保存的片段信息等。在使用Room之前,要先修改模块的build.gradle文件,添加对应的依赖。3.数据处理类,用于数据表层面的操作。2.事务类,用于事务层面的操作。

2024-10-03 09:49:15 1297

原创 Android中级控件

编辑框EditText用于接收软键盘输入的文字,例如用户名、密码、评价等,它由文本视图派生而来,除了TextView已有的各种属性和方法,EditText还支持下列XML属性。单选按钮要在一组按钮中选择其中的一项,并且不能多选,这要求有个容器确定这组按钮的范围,这个容器便是单选组RadioGroup。调用建造器的create方法生成对话框实例,再调用对话框实例的show方法,在页面上弹出对话框。判断选中了哪个单选按钮,通常不是监听某个单选按钮,而是监听单选组的选中事件。

2024-10-01 19:44:02 1220

原创 【Android】Activity

元数据的meta-data标签除了前面说到的name属性和value属性,还拥有resource属性,该属性可指定一个XML文件,表示元数据想要的复杂信息保存于XML数据之中。元数据不仅能传递简单的字符串参数,还能传送更复杂的资源数据,比如支付宝的快捷式菜单。没有明确指定要跳转的目标活动,只给出一个动作字符串让系统自动匹配,属于模糊匹配。3.调用意图对象setComponent方法。2.调用意图对象的setClass方法指定。1.在Intent构造函数中指定。

2024-09-30 21:21:25 1145

原创 【Android】Fragment动态切换以及生命周期

因为事先Fragment中已经写好了日志,我们打开Logcat查看对应日志即可。接下来是MainActivity和布局文件。首先我们准备好两个切换用的Fragmet。还有实现切换按钮的Fragment。

2024-04-25 12:45:30 1031

原创 【Android】RecyclerView 实现滚动列表

【代码】【Android】RecyclerView 实现滚动列表。

2024-04-25 12:45:20 356

原创 ViewPager2+Fragment+TabLayout 实现页面滑动

Frafment1中我还写了个Fragment切换,如果不需要可以删除,写成和Fragment2一样即可。对于Fragment中的页面内容随便写个TextView就行。

2024-04-25 12:44:49 344

原创 力扣经典150题(3)

最大(小)堆是指在树中,存在一个结点而且该结点有儿子结点,该结点的data域值都不小于(大于)其儿子结点的data域值,并且它是一个完全二叉树(不是满二叉树)。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给出数字到字母的映射如下(与电话按键相同)。你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。,返回其所有可能的全排列。你可以按任意顺序返回答案。的字符串,返回所有它能表示的字母组合。你可以按任何顺序返回答案。给定一个不含重复数字的数组。

2024-04-24 08:19:20 410

原创 力扣经典150题(2)

完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。递归的终止条件是链表的节点个数小于或等于 1,即当链表为空或者链表只包含 1个节点时,不需要对链表进行拆分和排序。, 以数组的形式返回每一层节点的平均值。判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。,请将其按升序排列并返回排序后的链表。叶子节点是指没有子节点的节点。给你一棵完全二叉树的根节点。,求出该树的节点个数。

2024-04-14 13:12:11 545

原创 力扣经典150题(1)

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。, 删除原始链表中所有重复数字的节点,只留下不同的数字。返回 已排序的链表。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。,旋转链表,将链表每个节点向右移动 k 个位置。,以从上往下、从左到右进行 Z 字形排列。,编写一个函数来检验这两棵树是否相同。将一个给定字符串 s 根据给定的行数。给定一个已排序的链表的头。给你两棵二叉树的根节点。给你一个链表的头节点。

2024-04-09 15:12:53 333

原创 力扣回溯篇

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。中的同一个数字可以无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。的 所有 不同组合 ,并以列表形式返回。你可以按任意顺序返回这些组合。你可以按任意顺序返回解集。,返回其所有可能的全排列。你可以按任意顺序返回答案。,数组中的元素互不相同。

2024-04-06 21:49:00 597

原创 力扣二分篇

给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1, -1]。你必须设计并实现时间复杂度为O(log n)的算法解决此问题。输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]输入:nums = [], target = 0输出:[-1,-1]

2024-03-11 14:53:31 479 1

原创 力扣图论篇

以下思路来自代码随想录以及官方题解。

2024-03-10 21:06:31 594

原创 力扣动态规划篇

以下思路来自代码随想录和官方题解。

2024-03-07 12:59:23 423

原创 力扣贪心篇

以下解题思路来自代码随想录以及官方题解。

2024-03-06 17:19:54 410

原创 登录拦截器+ThreadLocal实现用户信息存储

【代码】登录拦截器+ThreadLocal实现用户信息存储。

2024-03-05 20:39:38 1537

空空如也

空空如也

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

TA关注的人

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