通过多ViewHolder实现单列表不同的效果

如果用NestedScrollView来实现以上效果,就会出现瀑布流RecyclerView无限加载数据导致ANR,手动控制数据加载也可以,但会导致刷新列表时卡顿,这个卡顿会在数据加载越多而明显,因为瀑布流的Adapter不会再回收Item了,所以用户体验非常不好;这个时候我们就可以通过单RecyclerView+多ViewHolder来实现,由Adapter自己进行ViewHolder的回收。

萌萌の初音 发布于 2022-08-30

Kotlin Flow的简单使用(含StateFlow)

kotlin flow介绍flow基于kotlin携程;使用方式类似于RxJava但更简单;flow可以转换成LiveData;结合协程的作用域,避免内存泄漏...

萌萌の初音 发布于 2022-07-05

SavedStateHandle的简单使用

SavedStateHandle简介SavedStateHandle搭配ViewModel作为状态保存使用,ViewModel虽然也保存了状态,但仅限于屏幕旋转等资源配置变更导致Activity和Fragment销毁,如果是系统kill导致的销毁无法还原,SavedStateHandle就可以对V

萌萌の初音 发布于 2022-05-19

Jetpack paging3的使用

1. paging3相关依赖的引入:ext { room_version = "2.4.2" paging_version = "3.1.1" lifecycle_version = "2.4.1"}dependencie

萌萌の初音 发布于 2022-05-16

SurfaceView的简单实现

SurfaceView介绍在Android中更新UI必须保证操作都在主线程中,如果画面经常刷新变动就会导致主线程阻塞,影响用户体验或更严重的ANR,这时就需要使用SurfaceView进行处理。SurfaceView可以另起一个线程单独进行画面更新的,通过对cavans进行绘制来实现画面显示,在重复

萌萌の初音 发布于 2022-05-13

Android10外部储存权限补充

前情提要:在Android 10以上文件读取受限的解决方案文章中,通过Uri等形式进行文件读写,但对使用Environment类公共目录的读写不是很友好,并且第三方需要对我们的文件读取造成一定的麻烦。方案一:Environment实现在AndroidManifest.xml中加入<uses-p

萌萌の初音 发布于 2022-04-26

kvm虚拟机CentOS下扩容根分区空间

环境在CentOS stream 8的kvm中运行的CentOS 7.9虚拟机,使用的qcow2硬盘格式进行扩容;1.对qcow2虚拟硬盘进行扩容停止虚拟机,并进入qcow2储存目录[root@vm ~]# qemu-img resize centos7.qcow2 +50G以上代码代表虚拟硬盘增加

萌萌の初音 发布于 2022-04-26

Flutter插件实现AndroidView

使用flutter难免会借助原生view实现相关功能,直接在项目的FlutterActivity中实现不利于管理和组件化的实现,以下通过flutter plugin进行实现进行记录。1. 新建flutter plugin项目以android studio为例,new -> new flutte

萌萌の初音 发布于 2022-04-26

博客服务器Nginx访问优化

部署环境:静态服务器+应用服务器,静态服务器网络环境为固定的公网IP,应用服务器网络环境为动态公网IP(通常1~3天更改,通过DNSPod的API进行域名绑定)。这样的环境下通常会有几个问题:1. 每次应用服务器IP更改后,访问nginx就会报502;2. 加载数据缓慢,通常一个页面的加载速度为6-

萌萌の初音 发布于 2022-03-30