- 博客(24)
- 收藏
- 关注
原创 Compose LazyGrid(LazyVerticalGrid/LazyHorizontalGrid) 滑动事件和拖拽事件冲突
还好,Compose的LazyVerticalGrid为我们预留了userScrollEnabled,我们通过动态配置该参数,即可解决这个问题。也就是说,在我们在检测到长按事件时,设置userScrollEnabled = false,当拖拽结束时,我们再设置userScrollEnabled = true。通过以上规律,发现当拖拽方向和滑动方向一致时,detectDragGesturesAfterLongPress的onDrag回调并不会执行。当长按后拖拽方向是纵向,则会与纵向滑动事件发生冲突。
2024-05-07 10:23:17 655
原创 SP Flash Tool刷机教程(保姆式教学)
操作系统:windows确保设备已经解锁SP Flash Tool安装暂时无法在飞书文档外展示此内容安装包:安装方法:下载解压双击‘flash_tool.exe’,即可运行配置adb环境变量刷机包下载并解压。
2024-03-14 09:45:13 4857 1
原创 Android强制使用wifi网络或蜂窝网络
我们存在这样的需求场景,就是在wifi网络较差或wifi不能访问外网的情况下,需要强制Android设备使用蜂窝网络。Android 5.0(LOLLIPOP)以上,在同一时间下,Android系统则可以允许多网络类型连接,在这样子的前提下,你就可以选择究竟采用那种网络来完成你的请求。
2024-01-11 10:00:43 1098
原创 让你的AS编译速度6起来
AS版本:2022.3.1gradle版本:distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip。
2023-08-31 13:53:01 274
原创 MacOS 10.14.6系统安装Homebrew及Wire Guard
解压下载好的source code文件,然后右键source code文件,选择’新建位于文件夹位置的终端窗口‘目前最新的Homebrew是无法适配MacOS 10.14.6版本的。所以需要手动下载源码并安装。下载安装Homebrew。安装Wire Guard。
2023-08-08 10:37:32 1690
原创 Mac adb环境变量配置
mac下配置安卓sdk中的adb环境变量(亲测成功)启动终端,可以在Spotlight中搜索“终端”1.进入home目录cd ~2.更新.bash_profile文件注意:有一种情况是.bash_profile不存在需要先通过创建一个具体更新步骤:(1)通过vim编辑器编辑(2)点击键盘上i,编辑(3)在.bash_profile中添加。
2023-04-10 17:16:21 920
原创 重构之替换第三方框架经验总结
首先我们要考虑到,在我们项目中,是否采用装饰者设计模式,为第三方框架加了一层封装,从而实现不直接调用第三方库的api。这个时候,我们的第一解决方案就是,检查一下第三方框架是否需要更新。3.1 当我们可能再次需要替换三方框架的时候,我们可以保证不修改我们项目的源码。如果加了中间层,那么我们可以考虑替换一个较为成熟的第三方框架,在中间层做适当修改即可。2. 如果源码是开源的,我们直接把源码拷到我们的项目中,作为一个独立的module。写个中间层,包名和类名与旧三方库的保持一致,然后,封装新的三方框架。
2023-02-22 11:15:05 409
原创 代码接管经验总结
代码交接是一个非常值得重视的一个环节。设想,如果没有交接文档,并且前任开发已经离职很久,这将会是多么糟糕的一件事。会出现诸如找不到代码位置、找不到签名文件、编译配置错误等严重问题。
2022-04-01 10:43:15 4246
原创 Android 实现禁用中文键盘
不知道该如何一句话表达,标题姑且用产品的需求描述吧。其实产品想表达的意思是,在密码输入框实现全键盘样式英文键盘。然后我们遇到一个大坑, toggleButton.setOnCheckedChangeListener(new ToggleButton.OnCheckedChangeListener() { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
2021-07-06 10:36:13 430
原创 【经验总结】使用Android Studio转换Webp格式,遇到的那些坑
背景介绍2019年12月下旬,谷歌官方文档推出了,使用Android Studio转换切图为webp格式的说明。https://developer.android.com/studio/write/convert-webp文档中对使用方法有详细介绍,所以我就赘述了。那些坑如果你的项目中有大量的切图文件,不能一键转化,要逐一转换一键转换大量png的坑点如下:会导致部分图片的颜色...
2020-04-27 10:49:25 2831
原创 Effetive Java学习笔记------10. 重写 equals 方法时遵守通用约定
文章首先介绍了equals需要重写和不推荐重写的场景,个人觉得,首先要熟悉两个关键字:逻辑相等对象标识当你重写 equals 方法时,必须遵守它的通用约定。Object 的规范如下: equals 方法实现了一个等价关系(equivalence relation)。它有以下这些属性:自反性:对于任何非空引用 x,x.equals(x)必须返回 true。 对称性:对于任何非...
2020-04-02 20:32:10 192
转载 安卓 png转换成Webp
我们在做android瘦身的时候,首要考虑因素就是缩减图片占用空间。Webp一定是首先方案,具体原因有大神讲解,我分享一下,实现png转Webp的方法:很简单,看官方文档即可:https://developer.android.com/studio/write/convert-webp我写这个文档的初心是,看到中文的相关博客,都是各种乱七八糟的复杂操作,都没有谷歌给的方法简单。推...
2020-04-01 09:42:15 1791
原创 Effetive Java学习笔记------05. 依赖注入优于硬连接资源
首先我觉得有必要明确什么是依赖注入,少废话,上代码:// Dependency injection provides flexibility and testabilitypublic class SpellChecker { private final Lexicon dictionary; public SpellChecker(Lexicon dictionary)...
2020-03-26 20:38:19 208
原创 Effetive Java学习笔记------04实现类的非实例化,私有化构造器
学习资源路径:https://github.com/sjsdfg/effective-java-3rd-chinese/blob/master/docs/notes很多情况下,我们需要设计工具类,但是总是常常在这个工具类被使用的时候,被实例化。那么为了避免该工具类实例化,我们可以通过私有化构造器的方式,实现我们预期的效果。code:// Noninstantiable utility...
2020-03-24 09:45:15 198
原创 提高睡眠质量
先来破除几个常见的错误观念 1. 睡得久不等于睡得好。 最新研究发现,人的睡眠呈周期变化:从浅睡到深睡,到快速眼动期,完成一个周期。再回到浅睡,依此类推。整个周期大约持续90分钟。只要你的睡眠时间是90分钟的倍数,那睡眠质量一般都不会太差。这和睡觉时间长短其实没有太大关系。2. 半夜易醒,不等于睡眠质量差 有些人很容易半夜醒来,认为自己睡眠差,感觉很焦虑,其实大可不...
2019-10-25 21:09:11 388
原创 install apk issue
after android N(7.0) you may get issue like this.1. issue log:ava.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.Pro...
2019-02-22 14:24:58 284
转载 面试复习——Android工程师之Java面试题
1、进程和线程 地址空间和其他资源:进程间相互独立,进程中包括多个线程,线程间共享进程资源,某进程内的线程在其他进程内不可见 通信:进程间通信通过IPC机制,线程间通信通过数据段(如:全局变量)的读写,需要进程同步和互斥手段的辅助,以保证数据的一致性 调度和切换:进程是资源分配单位,线程是cpu调度单位,跟cpu真正打交道的是线程,线程上下文切换比进程上下文切换要快得多...
2019-02-13 20:18:07 197
转载 AsyncTask源码理解
@MainThread public final AsyncTask<Params, Progress, Result> executeOnExecutor(Executor exec, Params... params) { if (mStatus != Status.PENDING) { swi...
2018-08-29 17:32:27 109
转载 线程各种状态及转换
java中,线程的状态使用一个枚举类型来描述的。这个枚举一共有6个值: NEW(新建)、RUNNABLE(运行)、BLOCKED(锁池)、TIMED_WAITING(定时等待)、WAITING(等待)、TERMINATED(终止、结束)。 一、大多数人对线程状态以及状态转换的理解线程的状态转换: 当一个线程创建以后,就处于新建状态。那什么时候这个状态会改变呢?只要它调用的start...
2018-08-23 10:16:58 2873
转载 类加载器
转自:https://blog.csdn.net/dd864140130/article/details/49817357把“通过全限定名获取类的二进制字节流”动作交给虚拟机之外的类加载器来完成,这大大提高了类加载的灵活性,只要是二进制字节流就行。 系统类加载器有三种:启动类加载器、扩展类加载器、应用类加载器。启动类加载器(Bootstrap ClassLoader):由C/C++实现,负...
2018-07-18 13:32:26 137
转载 JVM类加载机制
转自:https://blog.csdn.net/dd864140130/article/details/49817357类加载过程为:1. 加载加载分为三部曲:加载字节码文件,通过限定全类名在方法区中,将静态数据结构转化为动态数据结构,并存在方法区中在堆内存中,生成对应的类对象,作为访问方法区数据的入口...
2018-07-12 20:28:18 143
原创 logback文件自动压缩,文件解压失败
在使用logback的时候,发现压缩文件无法解压,我的logback.xml文件大概这样写的 TRACE--> ACCEPT DENY ${LOG_DIR}/PlayLog.zip %msg%n
2017-08-31 16:47:45 3735 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人