技术总结
文章平均质量分 51
马占柱
Android行业多年软件开发经验,从事多年移动App开发,涉及医疗健康、商城、聊天、代驾打车、特种设备防护、公安边检查验领域;目前从事汽车车载系统开发工作。
展开
-
记录Gradle project sync failed 问题解决方案
1、打开setting2、找到如下设置3、选择java 15!!!然后进行重启就可以运行了到下班点了,今天整的差点没下班~原创 2024-04-15 19:12:40 · 303 阅读 · 0 评论 -
Android 点阵体文字动效,祝福永远的女神
Android 点阵体文字动效转载 2024-03-22 10:36:20 · 119 阅读 · 0 评论 -
Android 录音监听动画效果
在很多app种内置了语音助手,也存在各种动画,主要原因是处理2个阶段问题,第一个是监听声音的等待效果,第二个是语意解析存在一定耗时的等待效果,前者要求有声音输入时有视觉反馈,后者让用户知道在处理某些事情,同时呢,这个效果还能互相切换,这是一般语音监听动画的设计逻辑。本文提供一种,希望对大家有所帮助。总体上这个设计不是很难,难点是状态切换的一些过渡设计,保证上一个动画结束完成之后才能展示下一个动画,其词就是抖动逻辑,实际上也不是很复杂,第三方SDK的音量值一般都是有的,实时获取就好了。转载 2024-03-20 18:30:42 · 322 阅读 · 0 评论 -
Android 闪烁描边效果
什么是蒙版:所谓蒙版是只保留了alpha通道的一种二维正交投影,简单的说就是你躺在地上,太阳光直射下来,背后的那片就是你的蒙版。因此,它既不存在三维特征,也不存在色彩特征,只有alpha特征。那只有alpha通道的图片是什么颜色,这块没有具体了解过,但是理论上取决于默认填充色,在Android上最终是白色的,其他平台暂时还没了解。转载 2024-03-20 16:26:33 · 60 阅读 · 0 评论 -
自定义实现 View.DragShadowBuilder 设置拖拽视图的大小
自定义拖拽视图的大小原创 2024-01-28 11:35:54 · 374 阅读 · 0 评论 -
recyclerview滚动辅助器,每次横向滚动展示完整的item
RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。原创 2024-01-18 13:58:07 · 668 阅读 · 0 评论 -
处理横向textview 跑马灯效果,频繁刷新问题
自定义view处理跑马灯闪烁问题原创 2023-11-29 19:22:32 · 387 阅读 · 0 评论 -
APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。
APP 备案公钥、签名 MD5、SHA-1、SHA-256获取方法。原创 2023-10-15 16:03:01 · 1177 阅读 · 0 评论 -
Android 自定义开源库 EasyView
自定义view:蓝牙Mac地址输入控件圆环进度条控件计时文字控件简易输入控件,可用于密码框、验证码输入框进行使用饼状进度条简易弹窗,你可以选择自定义xml使用或者快捷使用两种方式转载 2023-10-09 15:10:10 · 266 阅读 · 0 评论 -
12宫格 抽奖逻辑实现【直接可用】
完美实现12宫格抽奖效果原创 2023-07-17 11:18:28 · 579 阅读 · 0 评论 -
安卓开发实用小技巧——Android禁止多点触控
禁用全局多点触控原创 2023-06-18 11:24:36 · 1120 阅读 · 0 评论 -
自定义view 拖拽、自吸边控件
自定义可吸附拖拽的view原创 2023-06-17 23:58:16 · 171 阅读 · 0 评论 -
app:tint 无法换色、不好使解决方案
在XML中为ImageView设置前端颜色时,直接使用android:tint会有效果,但是编译器标红了,提示Must use app:tint instead of android:tint。但把android:tint换成app:tint后,imageview的颜色却没有生效。原创 2023-06-05 20:21:36 · 811 阅读 · 0 评论 -
命令行生成Android jks签名文件并获取jks信息
Java keytool是密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。在Terminal输入以下命令,可查看keytool所有命令选项。这里来一个流程示范,仅供参考,正式发布签名不建议这样写。使用keytool生成签名文件。Terminal控制台输出如下。查看keytool的参数说明。下面是一个完成的创建流程。原创 2023-05-05 07:41:15 · 1568 阅读 · 1 评论 -
一个非耗时操作Input ANR引发的思考
今天喜提测试给的anr , anr报错信息如下。看到这个 anr 报错信息 ,Input事件导致的anr ,感觉和窗口没有焦点有亿点关系。转载 2023-03-21 13:51:17 · 704 阅读 · 0 评论 -
处理Bug:嵌套RecyclerView加载数据后页面自动滑动问题
的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。当数据长度到达某个阶段后recyclerView会自动往下滑一段,直到某一个item完整展示在屏幕中。该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。这个是因为recyclerview获取到了焦点。通常我们用到的是第三种,即在Item布局的根布局加上。这里的属性一共有三种。原创 2023-01-06 11:07:09 · 1133 阅读 · 0 评论 -
App报错: No package ID ff found for ID 0xffffffff
constraintlayout 2.0.0-alpha4版本的问题,回退到2.0.0-alpha3就可以了.【或者是使用最新版本也可以】PS: 这个是在一个英文网站上搜到的,刚好受用,哈哈.原创 2022-12-30 10:36:10 · 2388 阅读 · 1 评论 -
谷歌原生GPS定位处理【locationProvider】
谷歌原生GPS定位处理【locationProvider】原创 2022-12-28 10:26:54 · 572 阅读 · 0 评论 -
Android中layout-sw700dp、layout-w700dp和layout-h700dp的区别
其实,他们和drawable-hdpi/ drawable-mdpi等的使用类似,都是为了实现适配各种Android手机屏幕而使用的,只是drawable用来管理不同大小图片资源,layout用来管理不同布局,values用来管理不同大小的值。这里的sw代表smallwidth的意思,当你的屏幕的绝对宽度大于600dp时,屏幕就会自动调用layout-sw600dp文件夹里面的布局。当你的屏幕的相对宽度大于600dp时,屏幕就会自动调用layout-w600dp文件夹里面的布局。原创 2022-12-26 17:34:18 · 287 阅读 · 0 评论 -
Android 架构MVC MVP MVVM+实例
MVC、MVP和MVVM是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在一个类中。在Android中,Activity中既有UI的相关处理逻辑,又有数据获取逻辑,从而导致Activity逻辑复杂不单一难以维护。为了一个应用可以更好的维护和扩展,我们需要很好的区分相关层级,要不然以后将数据获取方式从数据库变为网络获取时,我们需要去修改整个Activity。转载 2022-10-12 16:46:32 · 1353 阅读 · 0 评论 -
没错,TheRouter 是我写的
补充:没错,货拉拉开源的路由库 —— TheRouter 是我写的大约在17年底到18年初的时候,我经常会讲一些当时做模块化开发的心得和踩坑历程。比如这几篇都是那时候写的:《》、《》、《》。但后来我慢慢不讲这些了,因为我发现做模块化,虽然我们能总结出来一套较为通用的解决方案,但很难通过几次短短的技术分享就跟别人讲清楚。并且很容易让人产生误解:我们是小公司,不需要做模块化。再加上因为当时是基于公司已有的基础建设,和制度的一些限制,并不能对外开源一套较为完善的模块化方案,这个种子就一直埋下了。转载 2022-09-26 16:12:00 · 266 阅读 · 0 评论 -
BaseQuickAdapter与recycler版本冲突导致setOnItemClickListener报错!
BaseQuickAdapter设置setOnItemClickListener报错原创 2022-07-19 16:56:33 · 1543 阅读 · 1 评论 -
网络请求日志拦截器【直接可用】
网络请求中的拦截器,任意可用,我是从okgo里面拷贝出来的,还是不错的 使用的时候如下:完整使用如下,我用的是Retrofit,可以直接使用我的网络工具类也行:原创 2022-07-07 17:09:25 · 754 阅读 · 0 评论 -
安卓开发中英文切换需求
其实不止是中英文,只是这个比较有代表性,什么语言都可以切换。安卓里面控制语言就是新建包,在res里面新建values-zh-rCN和values-en-rUS,zh代表的是中文,en代表的是英文。把strings相对应的内容复制过去。我把我的代码粘一下;(注: 要将目录展示由Android切换为Project,再新建包,否则新建包后无法显示新建的values包)zh里面就正常写中文就行。布局很简单,就一个按钮。现在距离实现中英文切换已经快了。在MainActivity中写上在按钮绑定的事件:...原创 2022-07-07 15:06:30 · 603 阅读 · 0 评论 -
Fragment 中的常用方法 isAdded()、isVisible()、isHidden()、isRemoving()、isResumed()、 isInLayout()
Fragment 中的常用方法 isAdded()、isVisible()、isHidden()、isRemoving()、isResumed()、 isInLayout() 等详解原创 2022-06-23 16:21:42 · 1024 阅读 · 0 评论 -
遍历手机SD卡所有文件,找到相关文件【直接可用】
遍历手机SD卡所有文件,找出相关类型的文件集合原创 2022-06-17 19:48:21 · 208 阅读 · 1 评论 -
关于OOM。内存泄露的一点优化想法备注
Android 中的内存泄漏的原因非常简单,只要理解一句话,那就是生命周期较长的对象持有生命周期较短的对象的引用原创 2022-03-05 17:41:39 · 2744 阅读 · 5 评论 -
AIDL报错,bindService一直连接不上、不起作用。
先说问题,最近用aidl,发现bindService根本就不走,不知道咋回事,明明写的没有任何毛病啊?//aidl绑定 private void bind() { Intent intent = new Intent(); String pkg = "com.example.mzz_service";//需要调用的服务端【另一个APP】的包名 String name = "com.example.mzz_service.service.Remot原创 2022-03-03 11:57:55 · 4613 阅读 · 16 评论 -
刘润:在李彦宏这本书里,我看到了未来交通的模样
(本文首发于“刘润”公号,订阅“刘润”公号,和我一起洞察商业本质)这段时间,我读了一本书,叫《智能交通》。一开始,我只打算花30分钟快速翻一下。但越读越有意思,越读越有意思。最后,我居然逐页读完了这本400多页的大部头。忍不住往前翻,看看是谁写的。李彦宏。我惊讶地问百度的同学,这本书,真是李彦宏写的吗?他们说,真是。这本书,真是李彦宏自己大段大段地写,然后发给团队编辑的。而团队的主要工作,是前期收集素材,和后期编辑校对。书稿都要交稿给出版社了,他还在不断发来增补的章节。不但出了书,他甚至还亲转载 2022-02-24 16:51:01 · 438 阅读 · 0 评论 -
安卓安装apk之后直接打开频繁重启、按home键返回,再次打开,重新启动
Android 安装完成后直接点击[打开],导致按home键返回,再次打开,走重启流程。如果先点击【完成】再打开,不会有问题。解决方法:在lanchActivity的onCreate()方法中加如下代码,一定要在setContentView()方法之前if (!isTaskRoot() && getIntent() != null) { String action = getIntent().getAction(); if (getI原创 2022-02-10 16:45:44 · 2966 阅读 · 2 评论 -
自定义get set方法
首先点击这里然后接下来点击+号自定义get set模式【名字无所谓,随便取,但是别太随意了哈,不然以后自己都蒙蔽】重新书写get set方法【这是我的,可以直接拷贝可用】#if($field.modifierStatic)static ###end$field.type ###set($name = $StringUtil.capitalizeWithJavaBeanConvention($StringUtil.sanitizeJavaIdentifier.原创 2022-01-12 16:19:05 · 410 阅读 · 0 评论 -
安卓查看任意当前运行App所显示的Activity的包名
1、进入adb所在目录或者是直接cmd输入查询代码:adb shell "dumpsys window | grep mCurrentFocus"结果如下:如果需要跳转过去的话:/** * 跳转到指定应用的指定页面 */ private void showActivity(@NonNull String packageName, @NonNull String activityDir) { try { In.原创 2022-01-07 13:43:56 · 5384 阅读 · 0 评论 -
安卓获取进程、服务、任务列表、获取已经安装的所有应用、根据包名卸载应用
获取进程列表,需使用ActivityManager中的方法获取进程名;再根据进程名,获取应用程序的ApplicationInfo对象;用ApplicationInfo中的方法为进程加载图标和程序名称。获取服务、任务列表方法同上。实例化ActivityManagerprivate ActivityManager mActivityManager;mActivityManager=(ActivityManager)getSystemService(ACTIVITY_SERVICE);获取各列表原创 2022-01-05 09:59:06 · 1388 阅读 · 0 评论 -
监听系统开屏、锁屏、解锁、按下home键、按下多任务键【未完待续】
ScreenReceiverUtil工具类/** * Author : 马占柱 * E-mail : mazhanzhu_3351@163.com * Time : 2021/9/22 9:40 * Desc : 锁屏解锁的广播动态注册监听 */public class ScreenReceiverUtil { private Context mContext; private SreenBroadcastReceiver mScreenReceiver; .原创 2022-01-04 12:04:03 · 423 阅读 · 1 评论 -
ScheduledExecutor使用之——重复创建停止周期性任务
ScheduledExecutorService的创建就不用多说,直接上代码executorService = Executors.newSingleThreadScheduledExecutor();ScheduledExecutorService的停止有shutdown和shutdownNow之分,可以看下它们之间的区别,但多数情况下都不能结束在线程池中的任务。不过有个小技巧可以让真正的逻辑不执行,就是在run方法中添加条件判断。如下:@Overridepublic void run(原创 2021-12-16 11:43:16 · 2048 阅读 · 0 评论 -
判断线段与围栏集合是否相交【相交求出交点的经纬度】直接可用
/** * Author : 马占柱 * E-mail : mazhanzhu_3351@163.com * Time : 2021/8/12 15:09 * Desc : 判断线段与围栏集合是否相交【相交求出交点的经纬度】 */public class GPSCheckUtils { public static final String TAG = "GPSCheckUtils"; /** * 地球周长 */ private static .原创 2021-12-08 15:56:58 · 610 阅读 · 0 评论 -
聊一聊Android开发利器之adb
学无止境,有一技旁身,至少不至于孤陋寡闻。adb的全称为Android Debug Bridge,通过adb可以方便我们调试Android程序。作为移动端开发相关的同学,掌握所需要的adb操作命令是非常必须的,就把平时工作中用得相对比较多的adb命令做个梳理。(日常中把adb操作命令搭配shell alias使用起来更方便)ADB常用命令1.启动/停止adb server命令adb start-server //启动命令adb kill-server //停止命令2..转载 2021-12-07 15:25:29 · 523 阅读 · 0 评论 -
全局手动捕获崩溃异常错误CrashHandler【工具类直接可用】
废话不多哔哔,直接上工具类/** * 全局捕获异常 * 当程序发生Uncaught异常的时候,有该类来接管程序,并记录错误日志 */public class CrashHandler_Ma { public static String TAG = "MyCrash"; // 用来存储设备信息和异常信息 private static Map<String, String> map = new HashMap<>(); //使用volati原创 2021-11-26 16:17:58 · 868 阅读 · 0 评论 -
【唤醒屏幕总结】java.lang.RuntimeException: WakeLock under-locked target
最近线上的项目遇到了这样的错误java.lang.RuntimeException: WakeLock under-locked target at android.os.PowerManager$WakeLock.release(PowerManager.java:2665) at android.os.PowerManager$WakeLock.release(PowerManager.java:2627) at com.driving.driver.android.kepplive.Pow原创 2021-11-17 11:12:03 · 2590 阅读 · 0 评论 -
史上最全ConstraintLayout(约束布局)使用详解
ConstraintLayout 是一个使用“相对定位”灵活地确定微件的位置和大小的一个布局,在 2016 年 Google I/O 中面世,它的出现是为了解决开发中过于复杂的页面层级嵌套过多的问题——层级过深会增加绘制界面需要的时间,影响用户体验,以灵活的方式定位和调整小部件。从 Android Studio 2.3起,创建layout文件就已经是默认ConstraintLayout了,但是尽管Google如此大力推这项技术,但在当时很少有人使用,近些年逐渐被大家拿起来,啊真香!(此处无图胜有图)。.转载 2021-11-15 15:28:18 · 497 阅读 · 0 评论