- 博客(44)
- 收藏
- 关注
原创 Json序列化后字段被吞的解决办法
当我在用kotlin和json结合使用时,发现调用JSON.toJSONString(object)对我的字段进行序列化时,其中两个字段被吞了,非常奇怪,百思不得其解,后来发现问题的根源在Fastjson 的字段命名规则问题上。让我们一起看看。
2026-05-22 16:52:36
68
原创 EditText属性运用之适配RTL语言和LTR语言的输入习惯
这样不仅在显示上满足了系统RTL/LTR语言的特性,即输入文本既可以根据语言特性显示在文本框的最右侧/最左侧(这根据Gravity而定,这里用START属性举例),而光标和输入文本的方向又可以根据用户习惯而定(例如输入中文时,我们希望光标在已输入内容的右侧,这样更符合我们的输入习惯)。这就导致了一个问题,当系统语言是RTL,而输入法语言用户想输入LTR语言时,这样的设计是与用户习惯不符的,在体验上会比较难受。也就是输入内容根据输入的文本语言选择显示在光标的哪一侧,如果输入法是LTR语言,比如中文,
2026-04-17 10:42:30
274
原创 设置安卓应用透明主题
在某些场景中,我们不想要安卓应用冷启动时的画面,我们可以将应用的主题设置为透明,方法如下,如果想要整个应用透明的话,同时记得将根布局背景设置为透明色。
2026-03-04 17:05:48
66
原创 【新手小白版】Gerrit使用教程
Gerrit是一种代码管理工具,是比gitlab更强大更规范的存在。它的功能包括不限于提交代码,合并代码,在网页修改提交的代码,解决冲突,筛选功能等。
2025-10-22 14:18:05
1836
原创 ScrollView精确跳转功能
画面框架是一个activity有数个fragment,fragment中二级父容器是scrollview,结合搜索功能,原有逻辑是模糊跳转,也就是根据仅处理了跳转到某个fragment显示,需求增加精确跳转功能,滚动到对应搜索词位置。另外,不止一个模块需要精确跳转功能,并且不同模块架构略有不同,在实现上有细微差别,以下是适配另一种情况的精确跳转Helper,适用于搜索热词表需要子fragment自行定制的情况。fragment在onResume时注册画面可被搜索到的词语及控件-》搜索模块传递搜索词-》
2025-10-17 11:03:21
243
原创 记录一个防重Toast
当我们已经对某个按钮做了防暴力点击,但是依然在业务上有些复杂交互的情况,需要我们封装一个防重Toast。针对这类情况,可以直接使用下面的showDebouncedToast。
2025-09-04 19:05:22
247
原创 Gerrit多仓库对应多邮箱配置办法
工作中,我们可能需要配置多个仓库对应不同的邮箱来拉取代码,本文讲解在windows下如何正确配置。例如我们需要同时拉取仓库A和仓库B的代码,A对应邮箱AAA@123456.com, B对应邮箱BBB@123456.com。
2025-07-22 10:12:32
568
原创 ImageView显示圆角图片的一种方式
完整显示图片:使用fitCenter或者centerInside。不缩放图片,如果图片比View大,则超出部分会被裁剪。类似fitCenter,但图片对齐到View左上角。类似fitCenter,但图片对齐到View右下角。使图片至少在一个维度上填满View。如果图片比View小,则不会被放大。精确控制的图片:matrix。使图片完全显示在View内。使图片完全显示在View内。图片会在View中居中显示。拉伸图片以完全填满View。保持图片宽高比缩放图片。保持图片宽高比缩放图片。使用矩阵变换显示图片。
2025-05-06 10:14:19
721
原创 自定义View之可控制是否需要押下态的TextView
在开发过程中,我们会遇到复用的TextView有时需要押下态,有时不需要押下态的情况,可以选择继承如下View的方式自主设置。当我们不需要押下态时,只需要在对应的代码块中传false值给setDispatchSetPressed;当我们需要切换成有押下态的TextView时,传true给此方法;当不需要切换押下态属性时,无需任何操作。
2025-04-27 13:36:38
264
原创 安卓动态加载webView,loadUrl修改html内容
webView loadUrl时需要修改文字内容,可以在onPageFinished的回调里面注入javascript语句。
2024-06-03 18:40:26
501
原创 自定义View使用LinearGradient绘制文字渐变效果,边框虚化模糊,边框渐消,不受背景约束
先看效果:(为了凸显渐变效果不受背景约束,这里layout的背景是黑色文本背景是灰色)
2023-12-15 14:37:17
714
原创 自定义可调节速度的跑马灯marqueeTextView滚动文字动效,循环周期停留
参考大神的笔记,在大神的基础上添加了速度到步长的转换以及周期性悬停的效果。
2023-12-07 09:53:57
867
原创 Android setAlpha无效或colors设置透明度
TextView或者ImageView平时会遇到设置alpha透明度属性无效的情况,一般是colors或者drawable中设置的属性把alpha这个设置给覆盖了,所以才会出现无效的情况下,遇到这种现象可以通过如下方式处理。例如我们现在要设置一个字体的颜色,UX图上展示的HEX色号为#020914,不透明度为60%,显示出来应该是灰色的。从FF开始表示完全不透明,到00表示完全透明。
2023-11-07 14:44:25
1179
原创 AOSP中常见模块所在路径,以及编译生成物的路径
push到设备中的路径一般和生成物的路径是一致的,例如vold的push路径就是/system/bin/,具体的生成物需要看对应代码模块下的.mk或者.bp文件,这两个编译文件中会写明编译的代码块以及生成物的名称linux搜索文件命令单模块编译命令----------------如下是安卓9----------------------
2023-10-26 17:07:43
1377
原创 git提交代码时报错nothing to commit,commitId错乱解决办法
--------------------------不解决冲突直接pull的情况-------------------如果盲目更新可能会导致修改的代码被冲掉,或者代码产生冲突,比较棘手,这里我介绍一种便捷的方法。在第二步可能会出现无法提交的情况,git会提示我们需要先更新代码。当然我们使用patch也是一样的效果,具体可以看我这篇。如图是我对上面这个报错的意思的解释。当我们执行如下命令提交代码。
2023-10-26 14:57:28
2059
原创 git 打patch协作合并提交代码,解决冲突
如果出现有冲突的情况,就用notepad++打开这个patch,根据报错信息修改冲突的地方,或者说如果冲突的地方量少的话,就直接删掉patch文件里的冲突部分,再执行apply命令,然后手动把冲突的地方的修改加一下。一般打patch要么成功合入,要么有冲突完全合入不了。
2023-10-26 10:32:19
1217
原创 RecyclerView(或ListView)添加右侧侧边滑动滚动条进度条ScrollBar
首先,我们需要先画出它的shape——打开res资源文件夹底下的drawable文件夹,右击——New——Drawable Resource File,输入文件名,例如my_scrollBar_shape,其余默认。这个东西叫ScrollBar,具体的动画形式是当用户上下或者左右滑动界面时,这个滑块会在需要显示的位置滑动。如代码,这个滑块我们已经做好了,可以在xml文件的design里面看到缩略图。这个文件的作用就是画出图片中的灰色渐变长矩形,也就是我们的滑块。
2023-10-26 09:51:38
3889
原创 Android AOSP添加selinux权限的方法
注意:安卓原生的权限添加,只需要在/system/sepolicy/下找到.te文件,若是有供应商自定义的内容,则还需要同时在/device/xxx/seplociy/下找到同名文件添加同样的内容。添加的语句:allow platform_app app_data_file:file execute;1.根据log报错来手动添加,这种方法有一定风险,不熟悉语法添加的新手可能报错。添加的位置:AOSP下找到文件名为“缺少权限的对象.te”需要访问的文件:app_data_file。
2023-06-13 10:00:57
1452
1
原创 windows使用任何应用打开文件管理器都超慢
找到左数第一列第五行indexing Options索引选项,左击。indexing Options弹框里点击选择Modify修改。选择右上角View By查看方式,选择small icons。最后退出控制面板,过一段时间之后你的文件管理器就会加载很快了。indexing Options弹框里点击Advanced。输入control,打开控制面板。在弹框里给C盘打上勾,点击OK。在弹框里选择rebuild。
2023-04-26 10:56:56
368
原创 Kotlin使用sendbroadcast时出现的空对象引用异常
不论我怎么初始化context和intent都没用,但是研究下来发现使用LocalBroadcastManager就OK了,如下。最近使用SendBoradCast(intent)总是报出空指针异常,真的超奇怪,代码如下。运行起来会报空对象引用并闪退,如下。
2023-04-17 17:09:19
477
原创 git commit后使用repo upload出现no branches ready for upload
首先温习一下使用repo拉取代码的过程repo sync -u xxx.git xxxx同步代码repo sync -c创建本地分支repo start <分支名> --all一般出现no branches ready for upload大多因为没有执行第三步创建本地分支
2022-05-23 17:36:58
1183
原创 Android使用InputFilter限制EditText中正在输入的字符长度,输入到限制长度的字符则禁止用户继续输入
当我们想实时控制用户的输入,将用户的输入的字符长度限制在一个范围内,我们可以写如下的一个字符长度限制类:import android.text.InputFilter;public class MaxTextLengthUtils implements InputFilter { private int mMaxLength; private Context contxt; private ImageView deleteBtn; public MaxTextLengthUtils(int
2022-04-27 19:55:13
2345
转载 关于不想让actionBar或BottomNavigationView长按menu弹出toast显示title文字的问题
取消长按menu弹出toast的问题膜拜大神!!!当你不想长按menu弹出toast,但又想保留menu的title的时候,可以这样做如果不需要保留title,可以直接在xml文件里写title = “”
2022-02-22 15:56:14
756
原创 Room数据库表结构改变,例如字段增加时,以新版本覆盖旧版本,app异常闪退
先附上大神的blogRoom踩坑:理解Room的正确升库跟着大神的步骤做,解决了这个问题,不过如果出现又需要改字段类型又需要增加字段的情况,在migrate中需要注意一下语句的写法 database.execSQL( "CREATE TABLE users_new (userid TEXT, username TEXT, last_update INTEGER, PRIMARY KEY(userid))"); // 拷贝数据 databa
2021-12-10 15:59:32
3095
1
原创 使用Android Stdio和Sqlite查看debug apk的数据库
1.USB连接电脑主机和手机,确保手机打开USB调试2.打开Android stdio,点击右下角的Device File Explorer,这时候就能看到设备名称了3.打开data/data,找到你想查看的app包名(注意一定要是debug版本的apk,否则就会显示红字run-as:package not debugger:com.xxx.xx)4.点开包名就能看到databases,一般会有三个文件,保存下来5.打开SQLITESTDIO,点击左上角database,点击add a databa
2021-12-09 17:58:26
2547
原创 EditText展示不了的字显示省略号
android:lines="1"android:ellipsize="end"当height和width都是wrap_content时,显示不下会在屏幕上自动换行
2021-12-03 13:22:16
2884
原创 gerrit提交代码有冲突或其他原因导致的cannot merge以及提交代码流程
首先确认是否在自己的文件夹下repo sync更新了最新代码cd 工程文件名进入工程文件git log查看提交版本再将自己提交之前的一个版本的版本号(change-Id后面的一长串数字)复制打开gerrit,在自己不能merge的地方点击rebase按钮,将刚刚复制的数字输入到parentID即可若还是不成功只能在gerrit上abandon了,然后在自己终端里先git stash保存内容到缓冲区,使用git reset --soft 版本号 回退到上一个版本,再git stash apply
2021-11-19 13:39:24
4948
1
原创 Android设置ImageView图片置灰滤镜,去除滤镜还原图片
设置ImageView滤镜private void setToGray(ImageView ImgV) { ColorMatrix cm = new ColorMatrix(); cm.setSaturation(0); // 设置饱和度 ColorMatrixColorFilter grayColorFilter = new ColorMatrixColorFilter(cm); ImgV.setColorFilter(grayColorFilt
2021-11-16 17:14:44
2436
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅