Mr.小朱同学
Java 开发工程师,从事 Web 应用程序的研发,擅长 Spring、SpringBoot 等技术。
热爱编程,业余时间学习新知识,通过 CSDN 记录学习心得和笔记内容。
展开
-
【kotlin笔记06】kotlin之泛型、泛型类、泛型接口、泛型方法、泛型的约束、泛型通配符
kotlin中也有泛型,和Java中的泛型的概念是一样 ,都是参数化类型,也就是说,将一个数据类型作为参数传递到一个类、一个接口、或者一个方法中使用,这是因为我们在编写代码的时候,不知道应该采用什么类型,只能够在程序运行的时候,才知道具体的数据类型,那么这个时候,就可以使用泛型来定义数据类型。kotlin中的泛型和Java中的泛型几乎差不多,只不过kotlin中的泛型有一点点语法上的不同,泛型可以大致分为三种:泛型类、泛型接口、泛型方法,下面分别介绍一下这三个泛型的使用语法。原创 2023-07-01 15:01:18 · 731 阅读 · 0 评论 -
【kotlin笔记05】kotlin之Lambda表达式、lambda作为函数参数、lambda作为函数返回值、lambda表达式调用的几种方式
kotlin中的Lambda表达式就是一个匿名函数,它的语法是使用【{}】花括号作为函数体,函数体中的就是匿名函数,kotlin中的Lambda表达式只有2种类型,分别是:无参数有返回值、有参数有返回值。原创 2023-06-29 21:19:57 · 722 阅读 · 0 评论 -
【kotlin笔记04】kotlin之单例模式、伴生对象、委托机制、异常处理、集合框架
kotlin中使用【objection】关键字声明单例类,单例类不需要使用关键字【class】,直接使用【objection】关键字就已经表示一个类了,并且这个类是单例的,也就说程序运行过程中,只会存在一个类的实例对象。kotlin中的单例类,就类似于java中的静态变量,访问单例类中的属性和方法时候,都是直接使用【类名称.属性】或者【类名称.方法】的形式,案例代码:原创 2023-06-25 22:18:23 · 624 阅读 · 0 评论 -
【kotlin笔记03】kotlin之面向对象、构造函数、方法重写、类的继承、抽象类和接口、常见的几种类
kotlin中定义抽象类需要使用【abstract】关键字,抽象类不能实例化,需要被子类继承,kotlin中抽象类已经具备了【open】关键字的作用,所以不需要单独再使用【open】修饰,抽象类中可以没有抽象方法,但是具有抽象方法的类,一定是抽象类。接口使用【interface】关键字进行定义,某个类实现某个接口使用【冒号】,和kotlin中的继承使用的是相同的符号,所以kotlin中接口和继承是可以写在一起的,一个类可以实现多个接口,多个接口之间使用逗号分隔,一个接口可以继承另一个接口。原创 2023-06-20 21:59:05 · 1478 阅读 · 0 评论 -
【kotlin笔记02】kotlin之区间和步长、数组、类型转换和null值处理、kotlin中的函数定义
kotlin中有两种定义数组的方式,第一种方式:使用 XxxArray// 第二种方式:使用 Arraykotlin中定义的变量,默认情况下,都是不能为空的null,要定义可以为空的变量,需要使用【?// 使用?问号表示当前这个变量可以为nullvar 变量名称 : 数据类型?fun 函数名称(函数参数) : 返回值类型 {// 函数体// return 返回值。原创 2023-06-17 17:33:57 · 1287 阅读 · 0 评论 -
【kotlin笔记01】kotlin之变量、数据类型、运算符、模板表达式、字符串方法、流程控制语句
kotlin是android官方推荐的一种编程语言,它是一种基于JVM的编程语言,可以和Java、JavaScript语言进行相互转换,使用Java编写的程序可以完全使用kotlin进行替换,也就是说,kotlin和Java是100%兼容的,并且相对于Java语言来说,kotlin语法更加的简洁,在android应用程序开发中,使用kotlin可以减少程序代码量,也就可以减少apk包的大小。原创 2023-06-17 14:42:53 · 1326 阅读 · 0 评论 -
【Android笔记109】Android之更新UI界面的几种常用方式
在自定义View组件的时候,有时候会动态的更新组件样式,这个时候,就可以使用【postInvalidate】方法进行UI组件的更新操作,【postInvalidate】方法的作用是:将对应的View组件从UI线程队列中弹出,然后重新渲染这个View组件。/*** 画笔对象*/// 设置抗锯齿@Override// 绘制图形// 主动更新UI组件,也就是重新渲染组件。原创 2023-06-11 10:03:56 · 1662 阅读 · 0 评论 -
【Android笔记108】Android之翻转视图组件ViewFlipper的使用
ViewFlipper是一个位于android.widget包下的翻转视图组件,它继承自ViewAnimator,所以ViewFlipper组件是具备动画效果的,例如:使用ViewFlipper可以实现轮播图的效果。ViewFlipper可以有两种使用方式,分别是:静态导入组件、动态导入组件。静态导入组件就是在XML布局文件中,直接将其他的XML导入到ViewFlipper组件;动态导入是在程序的运行过程中,通过Java代码动态的添加组件。原创 2023-06-08 20:57:10 · 796 阅读 · 0 评论 -
【Android笔记107】Android之图像切换器ImageSwitcher的使用
ImageSwitcher是android提供的一个用于显示图片的组件,这个组件可以实现多张图片的切换功能,ImageSwitcher其实是继承自FrameLayout帧布局,我们知道帧布局是会将所有的组件堆叠显示在一个平面上,图片切换器其实就是多张图片堆叠在一起,然后每次滑动时候,就显示下一张图片、上一张图片。原创 2023-06-04 10:02:37 · 1111 阅读 · 0 评论 -
【Android笔记106】Android之短信管理器(SmsManager)、电话管理器(TelephonyManager)
电话管理器,是android提供的一个专门用于操作和电话相关的服务,是一个系统服务,再使用的时候,可以通过调用【getSystemService(Context.TELEPHONY_SERVICE)】方法,获取到TelephonyManager电话管理器对象,使用这个TelephonyManager对象可以获取到电话相关的信息,例如:SIM卡信息、打电话、监听电话、获取手机信号强度、获取手机的地理位置等等内容。电话管理器服务:Context.TELEPHONY_SERVICE。原创 2023-06-03 20:49:55 · 802 阅读 · 0 评论 -
【Android笔记105】Android之使用Socket实现一个简单的聊天室案例
这篇文章实现的聊天室小案例,是基于Socket网络编程技术,首先需要搭建一个Socket服务端程序,这个程序专门用于负责接收客户端的Socket请求连接,并且对客户端的请求连接进行处理,例如:将数据发送给客户端连接、接收来自其他客户端发送的数据,将其转发给对应的客户端。因为是使用Socket进行网络编程,所以需要在AndroidManifest.xml清单文件里面,开启访问网络的权限。到此,基于Socket的简单聊天室就介绍完啦。服务端代码只需要运行这个java文件就可以。原创 2023-05-28 20:13:37 · 820 阅读 · 0 评论 -
【Android笔记104】Android之壁纸管理器(WallpaperManager)的使用
壁纸管理器,就是android提供的一个专门用于修改桌面背景图片的一个服务,通过这个服务(WallpaperManager)就可以自定义的修改android系统中自带的桌面背景、或者指定Activity的背景。getInstance(Context)方法:获取壁纸管理器对象,Context参数就是上下文对象,会将壁纸管理器对象和这个Context对象绑定起来,也就是对当前Context对象进行壁纸设置。设置壁纸显示的图片:有三个方法用于设置背景图片,每一个方法所使用的图片类型不一样。原创 2023-05-28 16:16:52 · 1526 阅读 · 0 评论 -
【Android笔记103】Android之自动完成文本框组件(AutoCompleteTextView、MultiAutoCompleteTextView)
AutoCompleteTextView是一个输入文本框组件,它可以在输入的时候提供对应的选项信息,选择对应的选项就可以自动填充到文本框里面,其实这个组件就是一个带有搜索功能的下拉框组件。MultiAutoCompleteTextView组件的作用和AutoCompleteTextView组件是类似的,两者唯一的区别就是:MultiAutoCompleteTextView可以选择多个选项,并且可以设置选项分隔符,文本框中会按照分隔符将多个选项显示出来。原创 2023-05-21 17:14:55 · 651 阅读 · 0 评论 -
【Android笔记102】Android之实现搜索界面(搜索微件SearchView的使用)
android系统提供了一个默认的SearchView类,我们可以通过菜单项的【actionViewClass】属性,设置搜索框的处理类,当然也可以自己使用【】标签自定义搜索框。原创 2023-05-20 11:05:24 · 1084 阅读 · 0 评论 -
【Android笔记101】Android之实现搜索界面(搜索弹出框)
Android中给我们提供了一个用于实现搜索的组件,有两种使用方式,第一种是:搜索弹出框;第二种是:搜索微件SearchView,这里先介绍搜索弹出框的使用。原创 2023-05-14 18:36:15 · 1604 阅读 · 0 评论 -
【Android笔记100】Android之列表活动组件ListActivity的使用
ArrayAdapter是一个数组数据适配器,它只能够显示一个简单的布局,并且只能是【TextView】文本组件。它有多个构造方法,通过指定【TextView】组件的资源ID,告诉android应该将数据渲染到哪个组件上面。/**Context context:上下文对象int resource:ListView布局中每一项item的布局文件IDint textViewResourceId:对应的TextView组件的资源IDT[] objects:需要渲染的数组数据*/原创 2023-05-11 21:55:35 · 778 阅读 · 0 评论 -
【Android笔记99】Android之悬浮按钮FloatingActionButton、Snackbar、CardView卡片式布局
app:fabSize:设置悬浮按钮的大小,三个取值:auto、mini、normal。app:backgroundTint:设置悬浮按钮的背景颜色。app:rippleColor:设置悬浮按钮,点击时候,产生的涟漪颜色,也就是按钮点击时候会变成另外一种颜色。app:elevation:按钮悬浮的高度,高度越大,按钮显示的阴影越深。android:src:按钮显示的图标。android:layout_gravity:设置悬浮按钮显示的位置,原创 2023-05-07 22:06:57 · 715 阅读 · 0 评论 -
【Android笔记98】Android小案例之APP应用程序管理(获取已安装应用、卸载应用)
这篇文章主要是介绍一个android小案例,可以用于获取android系统中已经安装的应用程序,获取到对应的应用程序包、应用信息,可以实现应用卸载等功能,这个小案例中,主要使用的android技术组件有下面这几个:ScrollView:滚动条组件。RecyclerView:使用GridLayoutManager网格布局的循环列表视图。ListView:简单的列表视图。ProgressDialog:用于显示弹出框。PackageManager:系统包管理器,用于获取android系统中已经安装的应原创 2023-05-02 20:40:06 · 826 阅读 · 0 评论 -
【Android笔记97】Android之RecyclerView使用GridLayoutManager网格布局
默认情况下,GridLayoutManager网格布局中的列表项是没有间距,要想设置列表项间距,需要自定义一个类,继承自【RecyclerView.ItemDecoration】类,重写【getItemOffsets()】方法,这个方法就是用于计算列间距。/*** 自定义列间距*//*** 每行显示多少列*//*** 行间距*//*** 列间距*//*** 获取列表项item的间距。原创 2023-04-30 13:27:49 · 1625 阅读 · 0 评论 -
【Android笔记96】Android之四种实现定时任务的方式(Thread、Timer、Handler、AlarmManager)
AlarmManager是android提供的一个闹钟管理类,这个类可以操作手机上的闹钟设备,它可以处于应用程序退出的状态下,再设定的时间执行某项任务,可以设置一次性的闹钟,也可以设置重复性的闹钟,一次性的闹钟不就相当于执行一次任务,重复性的闹钟就可以实现周期性的任务。在Android开发过程中,有时候可能会遇到一些需求,要延迟一段时间在执行某个任务,或者按照一定时间间隔执行某个任务,这种情况下,就需要使用到定时任务之类的类,我们可以使用下面四种方式来实现。原创 2023-04-29 11:50:00 · 1597 阅读 · 0 评论 -
【Android笔记95】Android之下拉刷新组件SwipeRefreshLayout的使用
androidx包下提供了一个SwipeRefreshLayout下拉刷新组件,它的作用就是当用户向下滑动屏幕的时候,就会出现一个刷新的效果,一般在下拉刷新的事件中重新调用后端接口,获取最新的数据然后重新渲染界面。SwipeRefreshLayout类是继承自ViewGroup,其中常用的方法有下面这些:原创 2023-04-21 20:40:02 · 811 阅读 · 0 评论 -
【Android笔记94】Android小案例(四)之模仿小米商城(购物车、登录界面)
购物车界面中,主要使用的技术是:ListView列表视图,以及列表项中的按钮如何处理点击事件,如何更新列表项的数据,使其重新渲染界面,另外采用SQLite数据库保存用户加入购物车的商品数据,借助于Room实现SQLite数据库的操作。原创 2023-04-20 21:09:43 · 365 阅读 · 0 评论 -
【Android笔记93】Android小案例(三)之模仿小米商城(首页商品展示界面)
首页轮播图,这里采用一个Banner组件实现,不知道的可以看下我之前写的一篇文章【【Android笔记90】Android之轮播图Banner的使用】。分析首页布局,可以发现主要是展示一些商品图片,但是不同的图片显示的布局不一样,有的是一张图片显示一行,有的是两张图片显示一行,为了实现这种可变的布局界面,我们可以采用【RecycleView】组件来实现。RecycleView是一个更高级的列表视图组件,它提供了三种布局管理器LayoutManager,例如:GridLayoutManager网格原创 2023-04-15 14:01:24 · 789 阅读 · 0 评论 -
【Android笔记92】Android小案例(二)之模仿小米商城(底部菜单栏、Fragment页面切换)
这篇文章,主要介绍Android小案例(二)之模仿小米商城(底部菜单栏、Fragment页面切换)。原创 2023-04-10 21:15:23 · 570 阅读 · 0 评论 -
【Android笔记91】Android小案例(一)之模仿小米商城(访问网络环境准备)
这篇文章,主要介绍Android小案例之小米商城(访问网络环境准备)。这里为了模拟通过后端获取数据,采用了几个json文件用于模拟返回的数据,需要把文件部署到tomcat服务器上即可。资源文件可以到【mishop数据文件】下载,下载之后直接复制到Tomcat中的【webapps】目录里面,启动Tomcat服务器即可。原创 2023-04-09 18:39:14 · 562 阅读 · 0 评论 -
【Android笔记90】Android之轮播图Banner的使用
Banner是一个第三方的轮播图组件,它提供了非常简单的轮播图实现方式,之前的文章中,我有些过如何使用Android实现轮播图的效果,可以看下这篇文章【【Android笔记55】Android之如何使用ViewPager2实现自动轮播图的效果】,这种自己实现的轮播图有些复杂,如果项目中,有多个页面都需要轮播图,那就可想而知工作量得多大,所以这里介绍Banner轮播图组件,可以轻松的帮助我们实现轮播图效果。原创 2023-04-05 19:08:42 · 2137 阅读 · 0 评论 -
【Android笔记88】Android之可折叠列表组件ExpandableListView的使用
ExpandableListView组件继承自ListView组件,它的使用方式和ListView大致相同,都需要通过Adapter适配器进行数据的渲染。在实际使用的时候,不会直接实现ExpandableListAdapter接口,而是通过继承BaseExpandableListAdapter抽象类,重写10个方法。ExpandableListView组件允许重置显示两层列表,最外层是分组,分组下面是子列表项。原创 2023-03-29 22:39:33 · 620 阅读 · 0 评论 -
【Android笔记87】Android之两种开发模式介绍MVC和MVP(登录小案例源码)
P是指主持层,P是Presenter的缩写,中文意思是:主持人,P层就相当于一个主持人,将M和V两层关联起来,也就是说,在MVP开发模式下,M和V层是不能直接进行交互的,两者进行数据交互都是由P层来实现的。在我之前的笔记里面,基本上都是采用的MVC这种开发模式,其中Activity充当了C控制器层和V视图层的角色,在这种开发模式下,Activity即要负责处理用户的事件,又要渲染用户界面,为了简化Activity的职责,于是就有了MVp开发模式的出现,下面介绍MVP开发模式。原创 2023-03-24 22:20:58 · 340 阅读 · 0 评论 -
【Android笔记86】Android之视频播放VideoView和音效播放SoundPool
VideoView是一个继承自SurfaceView的组件,它的作用就是用于播放视频,可以加载来自不同来源的图像数据,例如:资源文件、或者内容提供者。VideoView组件提供了一套播放、暂停、停止、快进、回退等功能的视频控件,它本质上就是对MediaPlayer的封装。原创 2023-03-23 21:39:17 · 374 阅读 · 0 评论 -
【Android笔记85】Android之使用Camera和MediaRecorder录制视频
录制视频,必须借助与相机设备,所以这里采用Camera这个相机类来完成相机设备的操作(注意:Camera类中的方法已经过期了,但是之类为了简单,先采用Camera类实现一个小案例)。Camera相机对象创建完成之后,就可以继续创建MediaRecorder对象,首先需要调用【】方法,设置camera相机,接着设置一些录制视频的相关参数。在camera相机对象调用【startPreview()】预览方法之前,调用下面的方法用于设置预览图像显示的方向(原创 2023-03-17 22:14:48 · 966 阅读 · 0 评论 -
【Android笔记84】Android之使用MediaRecorder录制音频
MediaRecorder是Android提供的一个专门用于录制音频和视频的类,它能够捕获各种编码格式的音频、视频。在使用MediaRecorder录制音视频的时候,确保android系统有相应的设备,例如:麦克风、相机等设备(注意:录制视频的时候,需要调用相机设备)。注意:Android Studio模拟器上无法录制音频,所以最好通过真机测试。原创 2023-03-16 22:42:07 · 477 阅读 · 0 评论 -
【Android笔记83】Android之侧滑菜单SlidingMenu的使用
SlidingMenu是Github上面一个开源的侧滑菜单组件,最开始的时候SlidingMenu是应用在IOS系统上,后面慢慢衍生到了Android系统上面,并且SlidingMenu被使用在很多的APP上面。如何引入SlidingMenu组件依赖???在Android Studio中创建一个工程,然后再工程中创建一个Module模块。弹出框中,选择左下角的【Import】,然后选择SlidingMenu解压之后的【library】目录导入工程。原创 2023-03-12 22:23:04 · 665 阅读 · 0 评论 -
【Android笔记82】Android之Room操作SQLite数据库及其使用方法
Room是一个专门用于操作SQLite数据库的技术,它是对传统的SQLite数据库操作的抽象封装,使用Room可以更加简便的实现SQLite数据库的增删改查功能。Room是Android Jetpack中的一部分,并且Android官方强烈建议,我们使用Room来操作SQLite数据库,而不是直接通过SQLite API。注意:使用Room需要引入相应的依赖。传统的SQLite的操作大致如下所示:第一步:创建自定义的数据库类,继承自SQLiteOpenHelper工具类,重写其中方法,创建数据表。原创 2023-03-12 10:54:43 · 561 阅读 · 0 评论 -
【Android笔记81】Android之RxJava的介绍及其使用
RxJava是一种响应式编程方式,它是将整个操作看作是一连串的数据流,下一个结点的输入数据是来自上一个结点的输出数据,在起始结点和终止结点之间,可以对数据流进行各种操作,例如:过滤、监听等等,最终会将这一条数据流输出到终止结点。在RxJava中,有两个核心的角色,分别是:Observables(被观察者)和Subscribers(观察者),RxJava有点类似于发布订阅模式。原创 2023-03-05 10:54:28 · 674 阅读 · 0 评论 -
【Android笔记89】Android之全局加载框Gloading的使用
Gloading是一个加载框类库,它可以以最简单的方式实现加载层loading的功能,loading在很多的APP中的肯定会使用到,例如:在用户查询数据的时候,就可以显示一个加载层loading,表示正在获取数据,这可以让用户具有刚好的体验。Gloading就是一个Java文件,体积很小,仅仅只有大约6Kb左右,代码行数在300行左右,它可以作用在Activity、Fragment、View、以及列表项Item中。/*** 自定义的 Loading 状态组件*//**原创 2023-04-02 20:27:11 · 936 阅读 · 0 评论 -
【Android笔记80】Android之Retrofit适配器和文件上传下载
这篇文章,主要介绍Android之Retrofit适配器和文件上传下载。文件上传时候,需要设置请求体是【multipart/form-data】,表示请求数据是二进制类型,并且接口调用方式必须是【POST】。OkHttp中可以使用【MultipartBody】类创建文件上传的请求体数据,调用【addFormDataPart()】方法设置表单数据。原创 2023-03-02 21:19:59 · 514 阅读 · 0 评论 -
【Android笔记79】Android之接口请求库Retrofit的介绍及使用
前面文章介绍了okHttp请求库的使用(【Android笔记43】Android基于HTTP协议的网络通信(HttpURLConnection、OkHttp)),这个是用于和后端接口进行数据交互的一个第三库,使用okHttp进行请求调用的时候,需要自己编写请求相关的代码,非常的麻烦,所以为了简化请求代码,就出现了Retrofit库,Retrofit底层就是基于OkHttp实现的,它是对okHttp的进一步封装。原创 2023-02-26 10:49:59 · 538 阅读 · 0 评论 -
【Android笔记78】Android之图片加载库Glide(过渡、变换效果)
Glide是一个专门用于图片加载的类库,它可以流畅的加载任何图片,并且节约内存空间,不会造成OOM内存溢出的情况,Glide也是google推荐的用于图片加载的类库。Glide不仅可以加载各种来源的图片,例如:本地资源图片、网络图片、本地文件等等,它还可以对图片进行操作,例如:设置圆角、边角、旋转、缩放等等。下面介绍Glide具体的使用步骤。原创 2023-02-25 10:10:41 · 725 阅读 · 0 评论 -
【Android笔记77】Android之MediaStore操作Image图片、Video视频、Audio音频文件
这篇文章,主要介绍Android之MediaStore操作Image图片、Video视频、Audio音频文件。原创 2023-02-19 22:22:49 · 920 阅读 · 0 评论 -
【Android笔记76】Android之MediaStore查询图片、从相册选择图片的小案例
MediaStore是android中一个专门用于操作多媒体信息的数据库,在android里面主要有四种类型的多媒体信息,分别是:Files文件、Image图片、Audio音频、Vedio视频。MediaStore就是一个用于操作多媒体的本地数据库,使用MediaStore可以获取到上面四种多媒体数据。原创 2023-02-18 21:57:03 · 726 阅读 · 0 评论