自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gengbaolong的博客

每天进步一点点

  • 博客(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 2604 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 12369

原创 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 4813

原创 友盟分享之微信分享

项目中使用了友盟-微信分享。想要在分享回调中处理一些逻辑,比如说关闭预览页面,提示分享结果等。按照友盟文档,一步一步操作下来,分享-预览页面-选择微信-跳转分享,通过微信分享之后,选择"返回xxx",理论上是触发分享回调,关闭预览页面。郁闷,不应该啊,,,回到代码中,发现分享回调不执行。 private val mUMShareListener = object : UMShareListener { override fun onStart(platform: SHA

2021-08-06 15:20:31 710

原创 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 2169 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 580 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 1561

原创 android番茄钟计时器

说白了,就是个倒计时功能。固定25分钟。倒计时完毕算作一个番茄钟。一说倒计时,android中常用的实现方式:1、CountDownTimer2\

2021-06-18 16:27:32 1087

原创 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 2231 1

原创 android自定义实现时间轴

很常见的一个需求,时间轴。一般会配合RecyclerView。这次刚好是RecyclerView实现的列表,同时要在左侧显示时间轴。而且这个时间轴不连续。

2021-06-18 16:05:48 605

原创 android RecyclerView禁止多点触控

是这样,原本有一个功能,是用RecyclerView实现的,点击每个item都会弹出一个PopupWindow。好的,用正常的方法实现就好。(注意点就是各个popupwindow的位置)然后有一天,发现多个手指同时点击,比方说用三个手指分别点击三个item,则会同时弹出三个PopupWindow,出现了重叠。不难想象出是什么样的效果,,,怎么改呢?第一反应,多点触控。肯定是跟这个有关。1、禁止某个View的多点触控,直接在该view所在布局的根上加android:splitMotionE

2021-04-19 18:58:51 2071

原创 android动态设置渐变背景

动态设置渐变色背景,可以使用 GradientDrawable实现。GradientDrawable 可以设置多个色值 GradientDrawable.Orientation可设置方向private fun generateGradientDrawable(colors: String?): GradientDrawable? { if (colors.isNullOrEmpty()) return null try { ...

2021-02-23 15:45:15 1605

原创 android布局问题-动态设置

有时候布局不居中,或者没有展示成预想的效果,不是xml布局有问题,而是代码动态设置部分有问题。稍不注意,就会浪费不少不必要的时间~我是遇到这么一个场景,封装了一个广告条view-------BaiPushAdView。然后在合适的时机添加到广告容器中---ViewGroup中val adView = BaiPushAdView(context)if (adView != null && adContainer != null) { destroyAdvertise(

2021-02-22 13:18:53 164

原创 编译报错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 438

原创 android绘制虚线

自定义view绘制虚线在某些手机上绘制虚线无效,始终显示为实线。

2021-02-05 10:50:34 1972 1

原创 android RecyclerView实现网格虚线分割线

RecyclerView实现了网格布局,现想要设置虚线分割线

2021-02-03 10:41:59 1347

原创 android播放视频多次请求问题

项目中有用到播放视频的需求。实现服务端返回视频url,客户端根据此url实现播放。因为这个播放功能很简单,所以选择了使用原生的mediaplayer实现。因为有进度条啊什么的,所以重点内容是一些状态的控制。这里不再赘述。这里记录一下遇到的播放视频的问题-----播放视频时,发现连续请求了三次。这就奇怪了,拿到url之后只是使用MediaPlayer设置了一次url,进行播放,怎么会连续请求三次呢???首先排查了客户端代码逻辑,没有触发多次请求。更懵了,,,难道是自己的实现有问题,那.

2021-01-26 11:15:01 803 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 8809

原创 android屏蔽按钮连续点击

android开发中,免不了会有很多按钮的点击,为防止用户故意为之,连续不停的点击按钮,造成短时间内不必要的请求过多,或者 出现多个跳转页面的问题,客户端需要对点击动作 做屏蔽处理,即屏蔽短时间内连续点击。(当然,这样也只是尽可能减少上述问题的出现,手速够快的情况下,还是会出现)正确代码:abstract class OnMultiClickListener(private val interval: Long = MULTI_CLICK_INTERVAL): View.OnClickLis.

2020-12-16 10:20:49 850

原创 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 605

原创 android全局异常捕获

某此版本迭代时,产品提出了这么一个需求点,全局捕获异常,然后重启app。前提:项目中集成了bugly异常统计,可以看到上报的异常信息,以及每天的崩溃率。有助于bug的统计以及分析解决。但是,用户的使用场景千奇百怪,还是可能出现有app崩掉的可能,基于此产品提出了全局捕获异常的需求点。全局捕获异常的处理网上有很多,这里就记录一下自己的实现。class GlobalExceptionHandler private constructor(): Thread.UncaughtExceptionH

2020-11-25 14:35:47 833 1

原创 记一个线上事故点

某次版本迭代,任务多,开发工期短。在处理小组件时,有这样一个需求,可以设置小组件皮肤,调整透明度。然后问题就出现在这里,在清单文件中同时给小组件页面设置了透明主题 和 方向属性。上线之前,测试也正常。上线之后,立马就有异常信息上报。一看,是小组件引起的崩溃,但是这个异常只在8.0.0系统上出现。Only fullscreen activities can request orientation切记切记,不要同时设置页面 透明 和 方向,在8.0.0上会引起异常。...

2020-11-13 09:56:11 90

原创 fidder映射

调试后台接口时通常会用到fidder抓包。有时候需要测试不同状态下,客户端的显示情况。这时可能只需要改某一个字段的值,那么简单粗暴的方式是改客户端代码,写死数据,再测试。如果状态太多,这样显然不太好,需要不停的改变代码,编译,运行。。。还有就是,客户端写死数据后,可能一时大意,忘记改回来了,这就要出大问题了!!!那么就通过fidder映射的方式来实现吧具体就是将某一个接口的返回值保存在本地,通过设置,将此接口映射到本地文件,这样,通过修改本地文件就可以实现不同状态的测试了。.

2020-09-30 17:51:24 720

原创 常驻通知栏去除声音或震动

应用启动后显示常驻通知栏。声音 和 震动这块设置都是默认的,也可以说就没有重新设置这块。默认就是常驻通知栏显示时是震动,是响铃,还是静音,都是跟系统设置来的。这样运行了一段时间,没有太大问题。忽然有一天,有用户留言说自己的手机打开我们的应用后一直在响。很快确定到,这个就是常驻通知栏刷新的问题。常驻通知栏中构造Notification的时候,默认了一些设置。这在大部分手机上正常,不会有明显的问题,如xiao mi 6, honor 10,oppo A5等。而在某些手机上会出现问题,比如M1816。

2020-09-28 11:28:48 2178

原创 自定义实现带刻度的圆弧

今天实现了一个自定义View效果图:绘制过程用到:绘制圆弧,绘制圆弧外文字,绘制图片等。

2020-09-27 16:01:56 343 2

原创 彻底解决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 2240

原创 语音播报

实现一段文字转为语音,并播放出来。也就是语音播报。这个功能使用了讯飞语音的在线合成功能完成。使用很简单,照着文档来就可以了。这里主要记录一下特殊点。1、mTts!!.startSpeaking(voiceContent, mTtsListener)这个api指的是合成并立即播放。如果想要先合成保存到本地,在合适的时机再播放出来。这个需求无法直接调用讯飞的api来实现,因为讯飞没有提供。只是提供了合成音频文件的api ——synthesizeToUri也就是这种情况只能.

2020-08-06 18:11:34 820

原创 Eventbus发送消息

在启动一个页面时,同时给这个页面发送消息,结果收不到。if (mSourceFrom != null && mSourceFrom == SourceFrom.FROM_SPLASH) { MainActivity.startMainActivity(this@ChooseProvinceActivity) EventBus.getDefault().po...

2020-07-26 17:00:49 491

原创 使用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 464

原创 定时任务之定时刷新常驻通知栏

项目开发中的需求:常驻通知栏所用数据来源于后端接口,有时效性,需要定时刷新数据。常驻通知栏定时刷新:需求是【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 848

原创 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 1162

原创 android改变图标颜色

同一个图标,但是可能会有多种背景颜色。比如,标识空气质量的图标,因空气质量有多种情形,对应的图标就有多种背景颜色。实现这种需求有两种方式: 1、针对每一种情形,切一张对应的图标。 2、只切一张图标,根据条件改变图标颜色。第一种方式就很简单,直接根据条件设置对应的图标就好 —— imageView.setImageResource(iconRes)这里着重介绍一下第二种实现方式。 源图标 1、通过set...

2020-05-13 13:42:51 4448

原创 android sqlite数据库

开发中用到了sqlite数据库对数据库进行了一些增删改操作之后,在查看数据库的时候发现,会同时生成三个文件,如下所示其中,wal 和 shm,这两个文件是暂存一些原子操作记录的,在适当的时候会回滚写回到db文件中。有时候你更新了一些记录,db文件不会改变,只会修改WAL和SHM文件的内容,可以理解为:操作数据库后数据先缓存到shm 和 wal中,当wal缓存达到一定数量再写入db。shm相当于是桥梁。故shm 和 wal 是可以删除的。如上截图,上次更新数据库是在2020-05...

2020-05-12 20:41:48 312

原创 2020-04-30

viewpager动态删除添加以及懒加载的处理TODO 节后完善

2020-04-30 23:57:24 91

原创 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 3041 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 384

原创 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 798

原创 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 7177 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 235

原创 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 669 1

android修改头像

从本地相册选择图片裁剪,或者拍照后裁剪,实现修改头像功能。做了兼容性处理。详细效果:https://blog.csdn.net/gengbaolong/article/details/84668216。

2019-02-15

Junit和JUnitGenerator

Intellij idea中用于单元测试的junit.jar 和 JUnitGenerator.jar。如何在Intellij中使用单元测试,请看https://blog.csdn.net/gengbaolong/article/details/80032099。

2018-04-21

可扩展RecyclerView

项目中的一个小需求,RecyclerView的条目可以点击展开,显示一些详细信息。效果可以参考:http://blog.csdn.net/gengbaolong/article/details/79594489。下载之前请看效果是否符合自己需要。

2018-03-17

android截屏分享

在项目中用到了截屏分享功能,现在把这一块功能单独摘出来。具体效果可以参考:http://blog.csdn.net/gengbaolong/article/details/79259520。

2018-02-05

android rtmp直播客户端

rtmp直播客户端,实现了采集数据,推流到流媒体服务端,拉流播放,播放使用的是Vitamio。搭建rtmp流媒体服务详细步骤可以看:http://blog.csdn.net/gengbaolong/article/details/77620408。

2017-10-25

自定义日历控件

android自定义日历控件,可以上下收缩展开,左右滑动,支持日程安排显示。效果可以看:http://blog.csdn.net/gengbaolong/article/details/78337778。

2017-10-25

JPush服务端工具类

极光推送时,我们自己的后台推送消息时调用的方法。可配合http://blog.csdn.net/gengbaolong/article/details/77198565查看。

2017-08-16

android端JPush接收者

为接收JPush推送的消息,android客户端重写广播接收者,在里面处理自己的业务逻辑。可配合http://blog.csdn.net/gengbaolong/article/details/77198565查看。

2017-08-15

JPush推送工具类

极光推送时,我们自己的后台推送消息时调用的方法。可配合http://blog.csdn.net/gengbaolong/article/details/77198565查看。

2017-08-15

时间轴效果(java)

项目中用到类似时间轴的效果,所以使用自定义View实现。

2017-07-11

ItemBarView

项目中有用到柱状图效果,就是简单的显示,竖线右边是正值,竖线左边是负值。

2017-07-10

获取应用的sha1值

用于获取apk使用的sha1值

2017-06-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除