- 博客(170)
- 资源 (12)
- 收藏
- 关注
原创 gradle编译问题
前提:当前使用Android Studio版本4.2AS4.2版本默认的编译版本是Java11,一般对应的gradle插件版本4.2.1,gradle版本6.7,1其对应关系问题:导入一个项目,编译报错这个就是gradle版本的问题。原项目使用的是:classpath 'com.android.tools.build:gradle:3.0.1'distributionUrl=https\://services.gradle.org/dist...
2021-10-13 10:57:13
3687
1
原创 Execution failed for task ‘:app:stripDebugDebugSymbols‘.
android编译报错Execution failed for task ':app:stripDebugDebugSymbols'.具体:解决:上面也给出了解决办法,就是需要一个合适的ndk版本。那么可以在build.gradle中指定ndk版本android { ...... ndkVersion "22.1.7171670"}然后再次编译就没有问题了。ps:这个问题的关键是前几天还可以正常运行,现在却无法...
2021-10-08 14:08:29
13702
原创 android动态设置背景
通常,在xml中设置背景android:background可以是颜色,图片,shape等。如果想在代码中动态设置,则要知道相应的api。1、background对应的动态属性值修改方法是setBackgroundResource2、setBackgroundResource(@DrawableRes int resid),可支持颜色,图片,shape等如setBackgroundResource(R.color.white)3、拓展一下,跟setBackgroundResou
2021-09-28 09:14:20
5161
原创 友盟分享之微信分享
项目中使用了友盟-微信分享。想要在分享回调中处理一些逻辑,比如说关闭预览页面,提示分享结果等。按照友盟文档,一步一步操作下来,分享-预览页面-选择微信-跳转分享,通过微信分享之后,选择"返回xxx",理论上是触发分享回调,关闭预览页面。郁闷,不应该啊,,,回到代码中,发现分享回调不执行。 private val mUMShareListener = object : UMShareListener { override fun onStart(platform: SHA
2021-08-06 15:20:31
802
原创 RecyclerView获取不可见的View
一个页面,根布局就是一个RecyclerView,由几个部分组合,作为item,实现了整个页面。如下图所示:由五个item构成。可见,不滑动状态下,1和 2完全可见,3部分可见,4和 5完全不可见。那么此时,有这样一个需求:需要截取1,2,3,4作为图片,实现分享。分享就不说了,难点在截取1,2,3,4几个view,然后构成图片Bitmap。具体做法是,通过RecyclerView遍历获取所有子view,得到1,2,3,4四个view。val rvAdapter...
2021-07-28 10:47:10
2524
1
原创 适配AndroidX
最近在适配androidx遇到一个异常:GeneratedAppGlideModuleImpl is implemented incorrectly.2021-07-20 16:03:37.128 19685-19685/com.xxx W/System.err: java.lang.IllegalStateException: GeneratedAppGlideModuleImpl is implemented incorrectly. If you've manually implement.
2021-07-20 16:30:15
847
1
原创 java.lang.IllegalArgumentException
android使用SweepGradient实现渐变圆弧,报错使用val sweepGradient = SweepGradient(0f, 0f, mInnerProgressColors, floatArrayOf(0.0f,aqi / mMaxAqi))mInnerProgressShader = sweepGradient报错:color and position arrays must be of equal length2021-07-07 09:19:57.974...
2021-07-07 09:37:26
1671
原创 android番茄钟计时器
说白了,就是个倒计时功能。固定25分钟。倒计时完毕算作一个番茄钟。一说倒计时,android中常用的实现方式:1、CountDownTimer2\
2021-06-18 16:27:32
1316
原创 android studio运行报错
Execution failed for task ':app:dataBindingMergeDependencyArtifactsDebug'.> Could not resolve all files for configuration ':app:debugCompileClasspath'. > Could not find :oaid_sdk_1.0.25:. Required by: project :app > project :lib.
2021-06-18 16:09:19
3153
1
原创 android自定义实现时间轴
很常见的一个需求,时间轴。一般会配合RecyclerView。这次刚好是RecyclerView实现的列表,同时要在左侧显示时间轴。而且这个时间轴不连续。
2021-06-18 16:05:48
687
原创 android RecyclerView禁止多点触控
是这样,原本有一个功能,是用RecyclerView实现的,点击每个item都会弹出一个PopupWindow。好的,用正常的方法实现就好。(注意点就是各个popupwindow的位置)然后有一天,发现多个手指同时点击,比方说用三个手指分别点击三个item,则会同时弹出三个PopupWindow,出现了重叠。不难想象出是什么样的效果,,,怎么改呢?第一反应,多点触控。肯定是跟这个有关。1、禁止某个View的多点触控,直接在该view所在布局的根上加android:splitMotionE
2021-04-19 18:58:51
2348
1
原创 android动态设置渐变背景
动态设置渐变色背景,可以使用 GradientDrawable实现。GradientDrawable 可以设置多个色值 GradientDrawable.Orientation可设置方向private fun generateGradientDrawable(colors: String?): GradientDrawable? { if (colors.isNullOrEmpty()) return null try { ...
2021-02-23 15:45:15
1823
原创 android布局问题-动态设置
有时候布局不居中,或者没有展示成预想的效果,不是xml布局有问题,而是代码动态设置部分有问题。稍不注意,就会浪费不少不必要的时间~我是遇到这么一个场景,封装了一个广告条view-------BaiPushAdView。然后在合适的时机添加到广告容器中---ViewGroup中val adView = BaiPushAdView(context)if (adView != null && adContainer != null) { destroyAdvertise(
2021-02-22 13:18:53
210
原创 编译报错com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details好吧,其实起因很简单,对app做lint检查,然后把检查出的不需要的图片给删除了,然后就编译不通过了,报错。你以为是怎么解决的呢?是下面的方案一?不是。那是方案二?不是。方案一:不使用appt2在项目根目录下的gradl...
2021-02-07 15:43:03
550
原创 android播放视频多次请求问题
项目中有用到播放视频的需求。实现服务端返回视频url,客户端根据此url实现播放。因为这个播放功能很简单,所以选择了使用原生的mediaplayer实现。因为有进度条啊什么的,所以重点内容是一些状态的控制。这里不再赘述。这里记录一下遇到的播放视频的问题-----播放视频时,发现连续请求了三次。这就奇怪了,拿到url之后只是使用MediaPlayer设置了一次url,进行播放,怎么会连续请求三次呢???首先排查了客户端代码逻辑,没有触发多次请求。更懵了,,,难道是自己的实现有问题,那.
2021-01-26 11:15:01
1070
2
原创 C:\Users\31073\.gradle\caches\transforms-2\files-2.1\
某次版本迭代,需要升级某一sdk由GDTSDK.unionNoPlugin.4.251.1121.aar升级到GDTSDK.unionNormal.4.310.1180.aar然后,编译,运行正常!!!快下班时,合并代码,合并之后 在我这边就报错了,编译都通不过。。。clean 删除build文件夹 重启studio 重启电脑等等,完全不行》》》1、C:\Users\31073\.gradle\caches\transforms-2\files-2.1\86...
2020-12-24 10:12:30
9534
原创 android屏蔽按钮连续点击
android开发中,免不了会有很多按钮的点击,为防止用户故意为之,连续不停的点击按钮,造成短时间内不必要的请求过多,或者 出现多个跳转页面的问题,客户端需要对点击动作 做屏蔽处理,即屏蔽短时间内连续点击。(当然,这样也只是尽可能减少上述问题的出现,手速够快的情况下,还是会出现)正确代码:abstract class OnMultiClickListener(private val interval: Long = MULTI_CLICK_INTERVAL): View.OnClickLis.
2020-12-16 10:20:49
919
原创 TabLayout切换页面
TabLayout+ViewPager+Fragment 实现多页面切换是一个挺常见的功能。尤其是在资讯类app中,如今日头条。这里记录一下项目中使用上述三个配合所实现的特定需求。效果图如下:描述下需求:1、页面A,页面B。2、页面A中有页面B的入口,即从A中点击某个item跳转到B页面。3、B页面是由TabLayout + ViewPager + Fragment实现的。4、B页面:默认一屏显示6个tab,对应也就是6个页面。5、通常情况下,我们的数据是15..
2020-11-30 17:41:44
674
原创 android全局异常捕获
某此版本迭代时,产品提出了这么一个需求点,全局捕获异常,然后重启app。前提:项目中集成了bugly异常统计,可以看到上报的异常信息,以及每天的崩溃率。有助于bug的统计以及分析解决。但是,用户的使用场景千奇百怪,还是可能出现有app崩掉的可能,基于此产品提出了全局捕获异常的需求点。全局捕获异常的处理网上有很多,这里就记录一下自己的实现。class GlobalExceptionHandler private constructor(): Thread.UncaughtExceptionH
2020-11-25 14:35:47
889
1
原创 记一个线上事故点
某次版本迭代,任务多,开发工期短。在处理小组件时,有这样一个需求,可以设置小组件皮肤,调整透明度。然后问题就出现在这里,在清单文件中同时给小组件页面设置了透明主题 和 方向属性。上线之前,测试也正常。上线之后,立马就有异常信息上报。一看,是小组件引起的崩溃,但是这个异常只在8.0.0系统上出现。Only fullscreen activities can request orientation切记切记,不要同时设置页面 透明 和 方向,在8.0.0上会引起异常。...
2020-11-13 09:56:11
120
原创 fidder映射
调试后台接口时通常会用到fidder抓包。有时候需要测试不同状态下,客户端的显示情况。这时可能只需要改某一个字段的值,那么简单粗暴的方式是改客户端代码,写死数据,再测试。如果状态太多,这样显然不太好,需要不停的改变代码,编译,运行。。。还有就是,客户端写死数据后,可能一时大意,忘记改回来了,这就要出大问题了!!!那么就通过fidder映射的方式来实现吧具体就是将某一个接口的返回值保存在本地,通过设置,将此接口映射到本地文件,这样,通过修改本地文件就可以实现不同状态的测试了。.
2020-09-30 17:51:24
789
原创 常驻通知栏去除声音或震动
应用启动后显示常驻通知栏。声音 和 震动这块设置都是默认的,也可以说就没有重新设置这块。默认就是常驻通知栏显示时是震动,是响铃,还是静音,都是跟系统设置来的。这样运行了一段时间,没有太大问题。忽然有一天,有用户留言说自己的手机打开我们的应用后一直在响。很快确定到,这个就是常驻通知栏刷新的问题。常驻通知栏中构造Notification的时候,默认了一些设置。这在大部分手机上正常,不会有明显的问题,如xiao mi 6, honor 10,oppo A5等。而在某些手机上会出现问题,比如M1816。
2020-09-28 11:28:48
2703
原创 彻底解决Android 8.0启动服务问题
使用服务首先想到的就是Service,然后在8.0上做兼容处理。按理说做完以上可以正常功能,没问题,但是因需求原因,发现还是会出现异常: android.app.RemoteServiceException Context.startForegroundService() did not then call Service.startForeground()android.app.ActivityThread$H.handleMessage(ActivityThread.java:220
2020-08-14 18:05:40
2420
原创 语音播报
实现一段文字转为语音,并播放出来。也就是语音播报。这个功能使用了讯飞语音的在线合成功能完成。使用很简单,照着文档来就可以了。这里主要记录一下特殊点。1、mTts!!.startSpeaking(voiceContent, mTtsListener)这个api指的是合成并立即播放。如果想要先合成保存到本地,在合适的时机再播放出来。这个需求无法直接调用讯飞的api来实现,因为讯飞没有提供。只是提供了合成音频文件的api ——synthesizeToUri也就是这种情况只能.
2020-08-06 18:11:34
975
原创 Eventbus发送消息
在启动一个页面时,同时给这个页面发送消息,结果收不到。if (mSourceFrom != null && mSourceFrom == SourceFrom.FROM_SPLASH) { MainActivity.startMainActivity(this@ChooseProvinceActivity) EventBus.getDefault().po...
2020-07-26 17:00:49
554
原创 使用VectorDrawableCompat.create报错
项目中使用了SVG代替PNG,线上出现了如下异常:android.content.res.Resources$NotFoundException: File res/drawable-xxhdpi-v4/ic_icon_air.png from xml type xml resource ID #0x7f07006c...
2020-07-26 16:58:34
539
原创 定时任务之定时刷新常驻通知栏
项目开发中的需求:常驻通知栏所用数据来源于后端接口,有时效性,需要定时刷新数据。常驻通知栏定时刷新:需求是【6:10,7:10,8:10,9:10,10:10,11:10,12:10,13:10,14:10,15:10,16:10,17:10,18:10,19:10,20:10,21:10,22:10,00:10】这些时间节点主动刷新。这就涉及到android中的定时任务!这里我采用AlarmManager来实现这个需求。思路: 1) app启动进入首页时启动定时服务Ala...
2020-07-01 10:23:30
998
原创 Unable to destroy activity:android.content.res.Resources$NotFoundException: Resource ID #0x7f0c000a
android studio运行项目报错,信息如下:04-17 11:16:11.756 800-800/xxx E/CrashReport: java.lang.RuntimeException: Unable to destroy activity {xxx.home.HomePageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x7f0c000a at android.ap.
2020-06-23 09:40:39
1285
原创 android改变图标颜色
同一个图标,但是可能会有多种背景颜色。比如,标识空气质量的图标,因空气质量有多种情形,对应的图标就有多种背景颜色。实现这种需求有两种方式: 1、针对每一种情形,切一张对应的图标。 2、只切一张图标,根据条件改变图标颜色。第一种方式就很简单,直接根据条件设置对应的图标就好 —— imageView.setImageResource(iconRes)这里着重介绍一下第二种实现方式。 源图标 1、通过set...
2020-05-13 13:42:51
5146
原创 android sqlite数据库
开发中用到了sqlite数据库对数据库进行了一些增删改操作之后,在查看数据库的时候发现,会同时生成三个文件,如下所示其中,wal 和 shm,这两个文件是暂存一些原子操作记录的,在适当的时候会回滚写回到db文件中。有时候你更新了一些记录,db文件不会改变,只会修改WAL和SHM文件的内容,可以理解为:操作数据库后数据先缓存到shm 和 wal中,当wal缓存达到一定数量再写入db。shm相当于是桥梁。故shm 和 wal 是可以删除的。如上截图,上次更新数据库是在2020-05...
2020-05-12 20:41:48
385
原创 json解析-将json字符串转为List集合
背景:本地放置了一个json文件,读取改文件为json字符串数据,然后将字符串转为List集合。转为List集合时报错:source[0] of type com.google.gson.internal.LinkedTreeMap cannot be stored in destination array of type代码如下://从本地json读取城市数据到数据库Str...
2020-03-31 12:00:39
3206
1
原创 Cannot choose between the following configurations of project
android studio编译项目报错:ERROR: Cannot choose between the following configurations of project :dragsloplayout: - debugApiElements - debugRuntimeElements - releaseApiElements - releaseRuntimeEle...
2020-03-15 10:47:06
448
原创 Android gradle版本号 与 gradle插件版本号
Android Studio中:正确区分gradle版本号和 gradle插件版本号。1、gradle文件 ——> gradle-wrapper.properties中指的是gradle版本号2、build.gradle文件classpath 'com.android.tools.build:gradle:3.1.2'指的是gradle插件版本号。但是,...
2020-03-07 22:51:51
918
原创 Could not resolve all files for configuration ':app:apt'
运行项目报错:FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring project ':app'.> Could not resolve all files for configuration ':app:apt'. > Could not r...
2020-03-07 20:18:40
7398
4
原创 No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices
项目中有用到github中maven上的库,项目编译时报错:No service of type Factory<LoggingManagerInternal> available in ProjectScopeServices.截图如下:首先,确保classpath对应的是android-maven-gradle-plugin,而不是...
2020-03-07 17:44:22
273
原创 Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated
运行项目报错:Cannot set the value of read-only property 'outputFile' for ApkVariantOutputImpl_Decorated{apkData=Main{type=MAIN, fullName=_360Debug, filters=[]}} of type com.android.build.gradle.internal....
2020-03-07 14:36:50
731
1
android修改头像
2019-02-15
Junit和JUnitGenerator
2018-04-21
可扩展RecyclerView
2018-03-17
android截屏分享
2018-02-05
android rtmp直播客户端
2017-10-25
自定义日历控件
2017-10-25
JPush服务端工具类
2017-08-16
android端JPush接收者
2017-08-15
JPush推送工具类
2017-08-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人