![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
解决方案
文章平均质量分 65
李小白lt
kotlin yyds
展开
-
使用插件重命名安卓项目内的资源名称
如果是组件化开发,组件内的资源要重命名,不能和宿主名称相同,否则可能会出现因资源名相同导致宿主资源覆盖组件资源的问题,严重可导致崩溃(比如id找不到导致空指针)所以我们需要给资源进行重命名,手动重命名比较耗时且容易遗漏,因此使用插件。原创 2024-04-25 22:45:11 · 270 阅读 · 3 评论 -
检查kotlinx-serialization-json的bean类是否都加了@Serializable注解
json解析框架有很多,但Kotlin跨平台只能使用kotlinx-serialization-json而官方没有提供检查是否bean类都加注解,或者一键给某个包自动加注解的功能,导致可能会出现运行时的崩溃,所以我们可以自己用ksp写个程序来检查一下。原创 2023-06-21 22:30:00 · 315 阅读 · 0 评论 -
安卓TextView的lineHeight*lineCount!=height问题,解决不支持滚动的系统下对多页Text进行分页
最近在做运行在墨水屏系统上的程序,由于墨水屏刷新率比较低,所以系统内的软件是不允许滚动和加动画的(在逻辑上)这样就导致了平时在普通安卓手机上很简单的程序,在墨水屏系统上就很麻烦,比如多页的应用,普通安卓机直接搞一个ScrollView和RecyclerView就可以了,但墨水屏系统上你需要自己计算每页展示多少内容,然后在进行分页处理...原创 2022-06-23 15:54:06 · 1224 阅读 · 1 评论 -
LtScrollImageView:自动滚动的广告图片展示栏
自动滚动的广告图片展示栏,使用超简单原创 2018-03-11 22:37:26 · 628 阅读 · 1 评论 -
RecyclerView复杂适配器的终极形态?代码更解耦
前言RecyclerView是Android开发中很常用的控件,市面上也有很多种封装,使其更易用,但是面对复杂的适配器需求,则很难做到逻辑清晰且解耦,比如聊天消息的适配器正文1.首先我们用最原始的方法写一个简单的聊天消息的rv实现图如下:代码如下:class MainActivity : AppCompatActivity() { //数据源: type to data val msgData = mutableListOf<Pair<Int, An原创 2022-01-07 15:50:10 · 3059 阅读 · 4 评论 -
好用的Span(富文本)api
/** * 将一段文字中指定range的文字改变大小 * @param range 要改变大小的文字的范围 ps:你关注的${name}也关注了你哟 = 4..(name.length+4) * @param scale 缩放值,大于1,则比其他文字大;小于1,则比其他文字小;默认是1.5 * ps: https://mp.weixin.qq.com/s/ji9MRaMhpVM711lDYL0LFw * 文章里搜索TextAppearanceSpan,可以设置某一段的很多.原创 2021-08-31 22:28:14 · 297 阅读 · 0 评论 -
ViewModel优雅的弹加载窗和获取Context
前言目前安卓开发一般都是用的mvvm模式,Jetpack的ViewModel是必不可少的一部分,而vm的生命周期要比Activity和Fragment长的,所以其一般不推荐其直接持有A或F,因为可能会造成内存泄漏的问题,但是不传入,Context的获取和显示网络加载弹窗又成了问题.正文首先解决显示网络加载弹窗的问题,其有两种方案:1.使用MutableLiveData首先我们在BaseViewModel中加入弹窗的MutableLiveDataval dialogShow = Mu原创 2021-07-31 16:22:18 · 4451 阅读 · 0 评论 -
logback无法生成日志文件之谜
前言spring一般需要打印日志,不然无法定位问题,也会增加调试难度,而目前和spring搭配的比较火的日志库是logback使用方法很简单,直接在该位置加入一个xml的配置文件即可(配置文件示例在文章末),而且可以很简单的生成日志文件正文但是我发现直接在idea里运行时,就会好好的生成日志文件,但在生成jar包后使用 java -jar xx.jar命令时却无法生成日志,很奇怪,而且搜索引擎搜出来的也跟我的貌似不太一样后来一次运行jar的时候手残双击了一下jar包,然后jar包被我原创 2021-05-10 15:02:02 · 10593 阅读 · 5 评论 -
Hook安卓项目内的字符串获取,用服务器的key value优先代替本地的key value
前言前段时间接到一个需求,要动态的增加多语言语种,且可以动态更新用户app上的不规范语言(比如一个英语过长导致按钮内显示不全)服务端的逻辑和前段动态获取的逻辑就不说了动态修改app内的语言参考这篇安卓多语言设置,深渊巨坑,适配7.0以上,并且解决因WebView产生的问题正文首先确定一下安卓中有几种获取字符串的方式1.Context#getResources().getString()2.Context#getString()//其实内部还是用的上一种方式,只不过少写了一点代码原创 2021-01-05 13:26:20 · 3608 阅读 · 13 评论 -
更新至Android Studio4.1后发现as打不开的解决方案
前言今天收到了as更新4.1推送,更完后发现打不开了,报下面的错误Internal error. Please refer to https://code.google.com/p/android/issuesjava.lang.NoSuchMethodError: com.intellij.ide.plugins.PluginManagerCore.loadDescriptors()[Lcom/intellij/ide/plugins/IdeaPluginDescriptorImpl;原创 2020-10-13 10:04:01 · 6018 阅读 · 40 评论 -
使用Retrofit时,对参数进行加密
前言从网上查了好多文章,不知道是不是版本问题,发现他们的都不管用,于是自己看了下源码,自己改了下源码import okhttp3.MediaTypeimport okhttp3.RequestBodyimport okhttp3.ResponseBodyimport retrofit2.Converterimport retrofit2.Retrofitimport java.lang.reflect.Type/** * creator: lt.dygzs@qq.com *原创 2020-10-24 09:21:06 · 1234 阅读 · 0 评论 -
接入Tinker热修复和踩坑
前言公司最近项目上线后总是遇见各种问题或bug,而我最近就一直在背黑锅,幸亏最近不用上Google Play了,赶紧加上热更新来脱离苦海吧,谁知道接入Tinker的过程中也踩了将近一周的坑,哎...一言难尽为什么选择Tinker我就对比了也懒得说了(其实是因为隔壁阿里收费)而且需要注意,中间很多版本不要使用最新的,要使用我写的,不然有问题了找都找不到(我在这中间查,试,测,中间用了不知道多长时间)正文此次接入Tinker是直接用的Tinker,没有使用Bugly的方式官方地址不多原创 2020-09-15 16:21:00 · 2163 阅读 · 2 评论 -
解决Android Studio内代码乱码
前言今天电脑忽然蓝屏了,重启后发现项目编译出现了些问题,然后打开某个文件发现代码乱码了,而且大部分文件都乱码了.解决方式在百度和Google上找了好多种方法,一般都是说设置编码就可以了,但是我用了他们的方法后并不起效.然后我删除build文件夹,清理as缓存都不起作用然后我把文件copy出来后发现用vscode就可以打开看到源码而不是乱码,再然后我发现只要把文件复制出来再覆盖回去,乱码问题就解决了...不知道为什么会这样,可能是as的bug吧,但是我没有深究下去为什么,以后有时间在看原创 2020-07-29 14:41:22 · 1087 阅读 · 2 评论 -
三方库报错真的就没有办法了吗?
前言项目最近适配了安卓10,而安卓10废弃了某些api,导致调用后就报错,比如:val var5: TelephonyManager = getSystemService("phone") as TelephonyManagervar5.deviceId而项目中用的某个库会在某些情况下调用该代码(这个库比较重要,更换的话问题比较多,且提问题的肯定赶不上上线了),于是就想办法能不能修改jar包来规避该问题然后试了下果然还是可以前提首先库是.jar或.aar的,不开源(开源的直接搞源原创 2020-05-30 14:54:03 · 281 阅读 · 0 评论 -
查看ndk崩溃
前言有一个项目,n多地方使用了ndk,但是之前没怎么搞过,遇到了几次崩溃,却无从下手,在百度上搜了良久,要么是重复的,要么是过时的,要么讲的不清楚自己试了不管用,于是科学搜索了下,并记录下来,怕自己再找不到了正文首先把ndk更新到最新版本(不要问我为什么...)下载安装好重启as,安不好就多安几次多重启几次然后配置ndk目录,一般ndk就在sdk子目录内然后配置环境...原创 2020-04-16 10:09:26 · 379 阅读 · 2 评论 -
手动实现kt(java)同步工作流和异步工作流
前言项目开发中可能会出现需要多个同步任务串行执行,或者多个异步任务都执行完毕再执行下一步的其实如果用kotlin的协程的话,可以很方便的完成,但如果不想用kt写或者引入协程库的话,就可以用下面两个工具类正文同步串行执行任务,使用链表结构import com.lt.androidkj.utils.mlistener.EmptyListenerimport com.lt.and...原创 2020-01-30 23:25:28 · 1224 阅读 · 2 评论 -
写一个测试工具类,只在debug时运行,而release时自动移除代码,适用于gradle项目(idea,android studio等)
前言平时开发有很多测试期间需要写的代码(比如日志),如何不让其在正式环境下运行呢?或者不让其在正式环境下存在(防止反编译查到重要信息)实现方法1.通过混淆工具类示例: 这是一个打印当前堆栈信息的方法,可以用来跟踪调用栈,测试环境下运行没有问题,但是到正式环境下,会不断的创建String对象,并且调用打印方法消耗资源object TestUtil { /** ...原创 2019-12-31 17:41:38 · 501 阅读 · 2 评论 -
安卓修改动画效果--动画差值器TimeInterpolator
前一段时间让实现一个类似弹幕的效果,从右到左飘过去,时间八秒,嗯,很好做,一个动画就ok了布局代码:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width...原创 2019-10-21 15:39:19 · 422 阅读 · 1 评论 -
安卓UI图分离器(支持ios@2x3x图转成安卓xhdpi,xxhdpi图,最新支持拖入并自动解压.zip图片压缩包)
如果UI是个ios粉的话,可能给的切图可能只会给ios分类,而不会给安卓分类,这样安卓用图片资源的话就苦逼了,,,如下图...人生苦啊...思来想去,这种搬砖的活应该交给程序来做,于是用了几个小时写了个小软件,为广大被坑的安卓开发者做一点微小的贡献,软件截图:然后去后缀处填 _w 把所有文件选中并拖入,一秒生成,如下图..nice具体怎么用软件上写的很清楚,都是中文,e......原创 2019-08-14 14:21:44 · 1559 阅读 · 0 评论 -
安卓多语言设置,深渊巨坑,适配7.0以上,并且解决因WebView产生的问题
前言安卓的多语言设置配置中strings.xml我就不说怎么弄了,主要说一下后续遇到的坑正文上个月接到需求,要给app内添加多语言设置,我心想没啥难的,配置一下strings.xml,加个修改的页面并保存到本地就ok了然后过了一阵,发现坑真多,然后我写了个工具类,如下:/** * creator: lt 2019/7/29--16:36 lt.dygzs@qq.co...原创 2019-08-10 17:15:41 · 1414 阅读 · 2 评论 -
使用Glide进行预加载图片
废话不多说,直接上步骤1.Glide的预加载api是preload具体用法为:Glide3Glide.with(context).load(url).diskCacheStrategy(DiskCacheStrategy.SOURCE).preload(width, height)Glide4Glide.with(context).load(url).apply(Req...原创 2019-08-27 20:33:31 · 7559 阅读 · 5 评论 -
坑爹的微信支付(签名错误)
前言以前调微信支付,直接把demo粘过来改改,或者从老项目粘过来,这次接手一个一年之前的项目,说微信支付没调通,好吧,我就调吧正文1:之前的body写的是中文,改成英文结果:失败(不过这一步很必要)2:传递的xml编码换为UTF-8结果:失败(编码应该为 ISO8859-1 )3.前面不行,就去微信官方签名方式测试https://pay.weixin.qq.com/...原创 2019-03-22 14:20:21 · 21516 阅读 · 18 评论 -
开发奇淫巧技Tips(Android篇)
没事会记录下开发的奇淫巧技,每个tips前都会标明开发语言,有更多更好的奇淫巧技可以发评论或者私聊,可以添加进来1.Kotlin:View调用此方法传入url加载网络图片,如果是ImageView则加载前景,否则加载背景/** * View调用此方法传入url加载网络图片,如果是ImageView则加载前景,否则加载背景 */fun View.loadUrl(url: String...原创 2018-05-15 14:03:58 · 801 阅读 · 1 评论 -
Kotlin优雅的使用sp(SharedPreferences)
前言我平时用java写的sp工具类,现在有两个需求:第一个是要管理sp的文件名,虽然java可以通过Config的方式配置几个final静态的字符串常量来管理,但是总感觉不够优雅,而且可能存在随便写个文件名,不放在Config内的情况第二个是要一次保存多个数据的话,java需要多次调用,emmm,不够优雅效果还是先看kt调用的代码同时向USER_INFO_CACHE文件中写...原创 2019-07-31 15:54:46 · 76757 阅读 · 1 评论 -
选择手机号前缀控件
前言前几天做了个选择控件,虽然挺简单的,但是就想给封装一下,封装完之后发现灵活性不高,牵扯资源比较多,于是就单拎出来,重新封装了下,灵活性大大提高,虽然很简单(源码就二百行,再加上一些xml文件和资源)Github地址:https://github.com/ltttttttttttt/select_countryps:kotlin写的,RecyclerView用的是v7包下的效果...原创 2019-08-19 11:30:22 · 9557 阅读 · 0 评论 -
发布开源库的踩坑经历:jitpack.io
前言很多小伙伴自己写了一个库,打算开源出来,但是直接给别人发jar包或者aar包,别人使用都很不方便,而且版本更新也不方便,所以很多小伙伴把开源库放到了远程仓库里(如maven或jcenter),但是麻烦就麻烦在需要打包导出等。而今天我要推荐一个超级方便的远程仓库:https://jitpack.io使用方法以安卓开源库为例子(java库也类似)先创建一个Android Lib............原创 2018-07-20 18:29:23 · 10777 阅读 · 3 评论 -
安卓程序添加指纹解锁功能
前言指纹解锁技术成为当前验证用户信息的重要手段,基本上当前手机都配置了指纹解锁。当开发的APP需要加密验证时可以考虑添加系统指纹解锁功能。添加指纹解锁功能步骤很简单,大致过程如下:1 添加权限在Manifest.xml文件中添加访问用户指纹的权限。 <uses-permission android:name="android.permission.USE_FINGERP...转载 2018-07-06 10:21:09 · 1912 阅读 · 0 评论 -
安卓队列缓存文件,包括断点续传
想起来之前做视频缓存的工具类,没事记一下,中间用了一个开源的缓存的进度库,其他的都是自己写的其中网络请求时用的OkHttp3缓存进度库用的是: compile 'io.github.lizhangqu:coreprogress:1.0.2'封装的工具类:DownloadUtil.javaimport android.text.TextUtils;import an...原创 2018-07-12 16:35:49 · 829 阅读 · 2 评论 -
防止网络请求(或其他回调)引用,从而造成内存泄漏
本文的解决方案用来解决类似如:Activity请求网络,而回调传的是自身,造成Activity执行finish()后并没有被销毁,而是被网络请求持有.和其相类似的问题正文1.网络请求使用Activity当做回调,如:public class MainActivity extends BaseActivity implements ObserverCallBack { @Ov...原创 2018-07-04 14:28:06 · 2710 阅读 · 5 评论 -
(三) LtRecyclerView v2.x (自定义上拉和下拉刷新View)
(一) 超简单自定义上下刷新布局-LtRecyclerView v2.x版本(基本使用)(二) LtRecyclerView v2.x (更多实用方法)(三) LtRecyclerView v2.x (自定义刷新View)6.自定义上拉加载的View6.1.通过setUpLayoutId()方法传入一个id可以控制全局的上拉刷新View原理是通过显示和隐藏布局内的两个Vi......原创 2018-06-13 13:39:00 · 430 阅读 · 1 评论 -
GreenDao高级用法
GreenDao高级用法:1.类内部有List<String>2.类内部有类3.类内部有List<类>1.类内部有List<String>复制该类到项目内import org.greenrobot.greendao.converter.PropertyConverter;import java.util.Arrays;imp...原创 2018-05-15 13:45:10 · 1209 阅读 · 1 评论 -
Android混淆模板与使用
AndroidStudio中minifyEnabled为true时是开启混淆,默认为proguard-rules.pro文件:以上为配置粘贴以下模板代码#-------------------------------------------定制化区域---------------------------------------#-----------------------...原创 2018-03-11 21:54:08 · 538 阅读 · 0 评论 -
使用ORM数据库:greenDao
1. 添加依赖:// 在总的 build.gradle 中buildscript {repositories {jcenter()mavenCentral() // 加入仓库}dependencies {classpath 'com.android.tools.build:gradle:2.3.1'...原创 2018-03-11 14:32:59 · 210 阅读 · 1 评论 -
RecyclerView添加头条目显示空白的解决方案
如果RecyclerView的头条目是建立在一个集合的基础上,通过添加到集合中然后刷新RecyclerView来添加头条目,若使用了集合.addView(索引,view)这样的方法可能会造成某条目显示空白解决方案就是把集合.addView(索引,view)替换成集合.addView(view)就可以解决了大致原理图解: 1.你这样插入,然后写索引为0 2.它就会给第一个换成你的,然后头部原创 2017-05-15 11:31:27 · 852 阅读 · 0 评论 -
android studio引用module出的错:Unable to resolve dependency for‘:app@debug/........
最近写了个test项目,想引用子模块结果报错:解决方案一:模块的support版本高于主项目的support版本把其他模块的support版本改为一致即可解决方案二:引用的并不是一个android library,而是一个application打开引用的模块的build.gradle文件修改为android library即可(修改第一行的插件名;删除appli...原创 2018-09-04 14:35:34 · 4940 阅读 · 2 评论 -
一个方法搞定安卓路由跳转
前言团队分模块开发在大项目上很常见,但项目组A想跳转到一个项目组B负责的Activity,此时若B未创建该Activity,则会影响项目进度,由此,安卓路由跳转出现了原理原理比较简单,大家都知道Context.startActivity()这个方法需要传一个Context和需要启动的Activity的Class类,而该方法就是利用运行时根据包名.类名来找到Class对象,然后使用Con...原创 2018-09-04 15:49:41 · 2715 阅读 · 1 评论 -
安卓三方登录趟坑,QQ,微信,微博,Twitter,Facebook,Instagram
前言最近给app加入三方登录,由于比较多,所以就用的友盟统一登录,会比一个一个配置方便点正文先说QQ,微信,微博:国内QQ,微信,微博三方登录其实还行,并没有太多坑,文档也挺完善的.但是需要注意的就是你后台配置的签名和当前的签名是否一致,然后appid和appkey是否配置正确(比如粘贴的时候多粘了一个空格)Twitter,Facebook,Instagram:由于之前...原创 2019-09-02 15:03:13 · 7220 阅读 · 2 评论 -
Android Studio 点击运行总是debug
今天遇见个奇葩问题,Android studio一点击运行程序按钮,就会安装并进入debug模式,还巨卡后来发现,先把手机的开发者模式,关了再打开就行了,服了原创 2019-05-23 17:32:34 · 1921 阅读 · 3 评论 -
androidx使用FileProvider适配安卓7
前言安卓7版本后,需要适配获取本地uri,否则会报错,之前用的android support库,可以参考这篇文章<点击查看>但是现在使用了androidx后,发现清单文件中配置不一样了适配方法以前是 <provider android:name="android.support.v4.content.FileProvi...原创 2019-05-21 13:40:40 · 21561 阅读 · 1 评论 -
Android Q适配
Android Q Beta出来了,看着隐藏的需要适配的坑还是挺多的,先占个坑吧,下文是转载的需要注意的坑的列表:https://mp.weixin.qq.com/s/eTJXAWLjGkSQ9kGTCJdzHA下面是适配需要注意的地方https://mp.weixin.qq.com/s?__biz=MzIxNjc0ODExMA==&mid=2247486384&idx...原创 2019-04-22 17:55:01 · 1656 阅读 · 1 评论