安卓开发技术
文章平均质量分 67
Z_yq
业精于勤,而荒于嬉
展开
-
使用TextPaint实现自由加粗字体:BoldTextView,支持中粗
难道安卓真的不能达到“中粗”的效果吗?其实是可以的。通过读TextView的源码可以看到,在onDraw()中,最终使用mTextPaint 完成文字的绘制,而使用mTextPaint 又实现文字颜色和是否粗细及文字大小等属性的控制。进而达到“中粗”的效果原创 2022-04-12 17:17:36 · 3635 阅读 · 0 评论 -
EasyPermission:一句代码解决动态权限的申请和回执(带权限提示信息)
效果展示以上是演示请求一个相机权限的过程:首次申请(顶部提醒)-拒绝-再次申请(顶部提醒)-再次拒绝(并勾选禁止再次询问)-再次申请(中部弹窗引导)-在设置页不授权-返回-再次申请(中部弹窗引导)-在设置页将相机权限设为允许-返回app在此过程中,任意一次拒绝和允许,都可以及时的拿到允许/拒绝的结果,进而在页面展示授权状态或者执行自己授权后的逻辑。以上的这些所有逻辑,只需要一句代码就能搞定,你相信吗?是的,EasyPermission她来了,在项目中集成之后,安卓权限的检查、申请、提示、原创 2022-03-28 09:21:13 · 1925 阅读 · 1 评论 -
【targetSdk升级适配记录】androidX/AndroidP/AndroidQ/AndroidR/AndroidS
【targetSdk升级适配记录】androidX/AndroidP/AndroidQ/AndroidR/AndroidS原创 2022-02-15 14:14:25 · 817 阅读 · 0 评论 -
WindowManager.getDefaultDisplay过时方法处理
WindowManager.getDefaultDisplay过时方法处理升级。targetsdk后会遇到很多过时方法,现在记录一下处理这些过时方法的替换方案和版本兼容方案,最后整理成一个专题原创 2022-01-17 22:43:35 · 3750 阅读 · 0 评论 -
使用nexus搭建局域网私服Maven仓库(2)-常用maven仓库代理配置
上次完整讲述了如何从零开始使用nexus搭建maven仓库使用nexus搭建局域网私服Maven仓库但是搭建完maven仓库只是把房子建好了,房子里还没有任何东西,此时依赖这个仓库还下载不到自己想要的东西(jar、aar等资源)。这里再记录下需要配置哪些常用的仓库代理。这里主要是记录仓库代理地址,所以操作步骤在之前讲过这里不再详细说明,只简单说下,具体操作见使用nexus搭建局域网私服Maven仓库登录nexus服务后,找到Setting-Repository-Repositories Cre原创 2022-01-12 10:58:53 · 2435 阅读 · 0 评论 -
android> GC overhead limit exceeded
android studio 报错 > GC overhead limit exceededjvm配置的内存过小导致长时间gc,可尝试从以下三方面去增加android可用的内存。1. 找到Android Studio安装目录Android\Android Studio\bin,修改studio64.exe.vmoptions和studio.exe.vmoptions;-Xms1024m-Xmx4096m2.编辑build.gradle文件,android节点下dexOptions原创 2021-02-03 17:01:22 · 207 阅读 · 0 评论 -
使用nexus搭建局域网私服Maven仓库(Windows版)
认识Maven仓库一 什么是Maven仓库 Maven 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和 依赖管理。Maven仓库是专门用来存放jar文件的管理工具(也可以用来存放项目war,zip,pom,aar等文件)。Maven仓库中为每个jar文件分配了一个坐标,Maven仓库能很方便的对项目依赖库进行版本的控制。简单地说Maven仓库就是帮我们统一管理项目依赖的工具。二 Maven仓库的作用用过eclipse开发项目的开...原创 2021-01-18 23:08:32 · 2096 阅读 · 1 评论 -
快速集成友盟Push,github创建可远程依赖的代码库
目的如题,本文就是为了解决集成友盟推送功能时工程繁琐,sdk更新不方便的问题,具体表现如下:1.集成困难,需要阅读大量的官方文档统计、推送、厂商推送,每个项目集成时,都需要查看阅读大量官方文档去集成,尤其是厂商推送,这样每次新项目集成时都需要花费很大的人力去干这件事;2. 集成后代码繁琐、臃肿 比如清单文件:由于友盟推送需要诸多权限,在manifest文件中又需要声明许多的权限、广播、服务等,再加上小米、华为、OPPO、VIVO、魅族这些厂商的适配,单只推送这一项功能,在manif..原创 2021-01-17 20:25:44 · 540 阅读 · 0 评论 -
使用OkHttp 下载文件无进度回调 踩坑
一、踩坑速记1. 未添加header指定服务器采用何种压缩方式导致下载进度异常描述:使用OkHttp3执行文件下载(服务端有nginx反向代理服务器进行压缩),获取回调中文件总大小为0或负值,导致显示下载进度异常。1.1 前端解决方案添加请求头addHeader("Accept-Encoding", "application/octet-stream")或者addHeader("Accept-Encoding", "*")即可;addHeader("Accept-Encoding",.原创 2020-10-29 01:17:35 · 2789 阅读 · 6 评论 -
run/debug app时报错:INSTALL_PARSE_FAILED_NO_CERTIFICATES
错误表现:run/debug时报错,错误关键信息:The application could not be installed: INSTALL_PARSE_FAILED_NO_CERTIFICATES,APK signature verification failed.截图如下:解决方法:不罗嗦,先直接上解决方案给大家节约时间,有兴趣的可以继续看下下面的分析。根据不同的原因,有以下几个方案:方案一,调低minsdk,可能是你的minSdkVersion设置的太高,调低minSd原创 2020-10-25 22:31:16 · 8940 阅读 · 4 评论 -
解决问题:resource IDS cannot be used in a switch statement in Android library
# 发现问题在抽取lib的时候发现了这样一个问题,如图所示:1. 很正常的onClick事件的处理,使用的swtich语句,但是却报了resource IDS cannot be used in a switch statement in Android library这个问题,原因是...2. android项目的library module里不能使用资源ID作为switch语句的c...原创 2019-07-11 20:11:21 · 3056 阅读 · 0 评论 -
WXApiImplV10.activityCb内存泄漏处理
集成了LeakCanary对APP进行内存泄漏监控后,发现有一个WXApiImplV10.activityCb这样的日志,是在登录页面发生的。产生的原因在发生此种问题的地方,你一定可以找到这样的代码,而且你对IWXAPI并不陌生。是的,这是微信的sdk。IWXAPI wxapi = WXAPIFactory.createWXAPI(this, Constants.APP_ID, ...原创 2019-06-22 15:30:48 · 454 阅读 · 0 评论 -
android开发百度地图黑屏闪退现象解决办法
昨天公司项目有邮件说客运站查询地理位置的时候,地图不能够展示,我安装测试了,发现不仅仅是不展示啊,黑屏,闪退,我擦,这还得了,赶紧解决。 于是拿代码去debug,发现,(⊙o⊙)…没问题啊,地图加载完好,并没有不展示和闪退、黑屏的bug,这是怎么回事呢???现在回想一下,debug没问题,打包的app有问题,那么首先想到的是百度地图api申请的密钥有问题,是用的本机的sha1值,原创 2016-04-20 09:39:12 · 9748 阅读 · 2 评论 -
反编译apk文件查看源码,反编译apk获取资源
之前做过反编译apk文件的,原本想的就是应该做下总结的,后来。。。不知道后来发生了什么,一定不是因为我懒了。总之,今天领导让我研究下一个口碑比较好的app,看下它某个功能怎么实现的,用的什么技术,又扒拉了半天才找好工具去查看,就觉得还是有必要做个总结的。废话少说,下面开始: 此次主要用到了三个工具,dex2jar,JD-GUI,apktool,其实还有一个windows下的批处理工具...转载 2018-03-07 17:00:09 · 10668 阅读 · 2 评论 -
整理:android开发中对图片的处理方式汇总
LruCache(Least Recently Used Cache) 全称最近最少使用算法,其主要思想是使用SoftReference(或者WeakReference),因为我们的缓存容量是有限的,它会面临一个问题:当有新的内容需要加入我们的缓存,但我们的缓存空闲的空间不足以放进新的内容时,我们就需要舍弃原有的部分内容从而腾出空间用来放新的内容。在LruCache 中,我们使用url做key,b...转载 2018-03-12 20:58:41 · 858 阅读 · 0 评论 -
收集Android开发常用开源框架:图片处理
1、图片加载,缓存,处理框架名称功能描述Android-Universal-Image-Loader">Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Glide一个图片加载和缓存的库,使用的App有:网易新闻Picasso-transformations一...转载 2018-03-12 20:59:35 · 2537 阅读 · 0 评论 -
解决使用正则时报异常:Incorrectly nested parentheses in regexp pattern near index ...
公司项目中有个需求是列表中匹配到和输入框中文字相同的部门变色,所以实现时使用了正则表达式匹配,使用SpannableString实现变色。String patten = "" + keyWord;Pattern p = Pattern.compile(patten);Matcher m = p.matcher(str); 需求实现了,测试也没啥问题,然后上线了,...原创 2018-08-06 16:35:25 · 3659 阅读 · 2 评论 -
Android开发:UncaughtExceptionHandler捕获全局异常
# 前言应用当前界面崩溃停留在上个页面,看不到崩溃日志?Android的logcat控制台,看不到应用崩溃的日志?如何拦截到未捕获的异常,并打印出来,帮助我们快速定位到代码问题呢?最近同事跟我反应说开发的应用run的时候发生了崩溃,但是在logcat中,只看到了应用重启的日志,类似下面这样的:# 寻找方案那么怎样查看错误日志,快速定位问题的原因呢?1,由于崩溃的概率...原创 2019-05-19 12:08:57 · 1171 阅读 · 1 评论 -
一个Android动态权限的流式权限管理库EasyPermission,帮你申请动态权限
EasyPermissionREADME: 中文 | EnglishEasyPermission简介这个是一个方便Android中权限管理的库,它使得申请权限和业务代码逻辑简单分离,不去关心权限的申请和回调。源码地址:https://github.com/githubZYQ/easypermission初衷以前你是怎么管理Android的权限的?先判断有没有权限,再申请权限,最后on...原创 2019-06-07 10:36:08 · 3102 阅读 · 1 评论 -
Android中使用shouldShowRequestPermissionRationale判断权限被禁止
前言Android6.0之后的有些权限需要去动态获取,这个过程中呢,我们或许会遇到这么几个方法。1.ContextCompat.checkSelfPermission 检查权限是否允许2.ActivityCompat.requestPermissions 请求某个或某几个权限3.onRequestPermissionsResult 手动请求权限之后的结果回调4.shouldShowReq...原创 2019-06-07 10:41:03 · 16026 阅读 · 4 评论 -
zxing-core 3.4.0扫描二维码发生崩溃,日志发现:NoSuchMethodError
#问题来源之前项目用的zxing包是下载到本地的,由于比较旧,有客户反映扫码效果不太好,所以昨天先对zxing-code进行了更新发现zxing前几天都已经更新到3.4.0了,相信使用zxing的小伙伴们最近也一定会陆续跟上更新的。zxing在github上的地址:https://github.com/zxing/zxing然而,在更新了之后去欢乐的扫码,确实比效率比旧版有不少的提升,但是在...原创 2019-06-07 10:52:17 · 2262 阅读 · 3 评论 -
Android的原生APP如何调试嵌入的H5页面
前言现在原生app中混合web页面这种方式用的场景越来越多,app的原生代码很容易使用android studio进行debug调试,web页面在Chrome浏览器中F12打开开发者工具,也非常方便调试web页面。但是嵌入在app中的web页面如何调试代码呢?使用混合开发WebView调试必备神器DevTools。使用DevTools进行调试准备工作1.设置Webview调试模式可以在...原创 2019-06-22 15:29:54 · 9020 阅读 · 0 评论 -
正确的解决GridLayout在安卓4.0以下版本中兼容问题
GridLayout是安卓 4.0版本加入的,它可以用来取代TableLayout,同时提供了自由度较大且更加使用的排版功能,给开发者带来了福音。然后,到真正使用时,开发者却会遇到一个难题。 ---- 》使用Gridlayout时,会提示Gridlayout最低版本要求是Android API Level 14,也就是正式版的Android 4.0。解决这个问题有两种方案:1. 第原创 2015-06-27 17:28:22 · 4683 阅读 · 0 评论