- 博客(8)
- 资源 (1)
- 收藏
- 关注
原创 Android 使用UDP广播无法接受到消息
val broadcastAddress = InetAddress.getByName("255.255.255.255") // 或指定子网的广播地址。不要使用这种方式来初始化!Log.e(TAG, "搜索设备错误:${e.message}")func.invoke("发生异常${e.message}", false)Log.e(TAG, "搜索设备错误:${e.message}")
2024-12-09 14:43:17
475
原创 如何从InputStream获取完整长度的字节数组
上面是正常从InputStream读取数据指定一个1024可能不太符合某些业务情况,特别是从网络获取到数据时。每次写IO的时候都忘记,写个笔记防止忘记。如何准确指定长度捏?
2023-08-16 15:34:20
1131
1
原创 Android项目没有BuildConfig解决方案
新建了一个项目发现无论怎么编译清理还是清除缓存都没有 BuildConfig 这个 文件。只需要在gradle中加入。然后在Build一下即可。
2023-07-11 09:47:23
1961
原创 Android 使用PorterDuff.Mode.XOR自定义透明遮罩
在业务开发中很多场景都会遇到遮罩。今天使用 PorterDuffXfermode 的XOR模式来绘制一个中间透明的遮罩。先上一张图看看效果分析一下:1:后面的背景是黑色2:中间还有一个不规则的透明部分 使中间透明就需要使用到 PorterDuff.Mode.XOR3:还有一个边框以上如何实现的呢?下面上代码一:首先继承Viewclass MaskView @JvmOverloads constructor( context: Context, a...
2022-05-30 14:00:11
1302
原创 Room数据库添加字段遇到的问题记录
Android 开发项目使用到了Room数据库。在业务不断完善的时候数据库都会发生变化。今天在给表增加列的时候遇到了一个问题。Migration didn't properly handle xxx我升级表的目的是为了给表增加一个布尔值以下是出错的代码: 从版本1迁移到版本2在test_records表里面增加一列 is_tourists_dataval MIGRATION_1_2 = object : Migration(1, 2) { override fun mi..
2022-05-09 16:36:20
1540
原创 Android 状态栏常规操作(状态栏显示,状态栏颜色,沉浸式状态栏)
在app开发中,通常都会修改状态栏样式,当你在搜索引擎上一顿操作后搜到的代码都是过时的。当你把Android SDK 兼容版本调整到30,你会发现处理状态栏的部分代码开始划上横线(弃用)问:新版API变成什么了?答:WindowInsetsControllerCompat问:为啥要改?答:当你打开WindowInsetsControllerCompat的构造方法你就会发现该api处理了不同版本的适配,不同于以前直接操作Window添加各种Flag来处理,看着都乱七八糟的pub
2021-08-03 15:35:13
5735
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人