笔记
文章平均质量分 61
汤米粥
每当你在感叹,如果有这样一个东西就好了的时候,请注意,其实这是你的机会
展开
-
OneLink 与 appsflyer配合
oneLink与appsflyer结合原创 2024-04-18 11:15:45 · 321 阅读 · 0 评论 -
在线图片处理网站
在线ps:https://www.webps.com/在线图片圆角处理:在线图片圆角制作工具 - 在线图片工具箱在线图片处理工具集合:在线图片工具箱 - 让图像处理更加简单原创 2024-04-16 11:30:02 · 237 阅读 · 0 评论 -
Unity导出Android项目踩坑记录
如果unity的ndk版本和android项目里的ndk版本不一致会报错,让人很崩溃的。原创 2024-01-19 12:22:29 · 896 阅读 · 0 评论 -
使用EgretNativeAndroid对游戏热更新
使用EgretNativeAndroid对游戏热更新转载 2023-02-28 19:13:41 · 615 阅读 · 0 评论 -
Android Gradle 三方依赖管理详解
这里有细心的小伙伴就会发现,我们声明的是 groovy-core,使用的时候却是 libs.groovy.core,这是因为 Version Catalogs 在根据别名生成依赖时对安全访问器的映射要求,别名必须由 ascii 字符组成,后跟数字,中间分隔只支持 短划线-、下划线_、点.,因此声明别名时可以使用groovy-core、groovy_core、groovy.core,最终生成的都是 libs.groovy.core。创建一个新项目,这个项目里面默认的依赖就是最原始的,没有经过统一管理的;转载 2023-02-24 12:02:57 · 1923 阅读 · 0 评论 -
Android11(api 30)以上设置全屏不起作用的解决方法
以下示例定义了一种样式,您可以使用它将 LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES 属性应用到 Activity。LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT - 这是默认行为,如上所述。LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES - 在竖屏模式和横屏模式下,内容都会呈现到刘海区域中。LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER - 内容从不呈现到刘海区域中。转载 2023-02-24 11:15:35 · 2653 阅读 · 0 评论 -
Android启动优化之布局优化
1. 使用ConstraintLayout减少嵌套,使用inclue,merge,viewstub等。2. 使用异步加载布局,AsyncLayoutInfater。//子线程异步执行xml加载。原创 2023-02-13 10:11:18 · 131 阅读 · 0 评论 -
Android启动优化之检测哪里耗时
网上讲的很多启动优化的知识点,但大多都是根据经验知道哪里需要优化,再去进行优化,但如果不知道是哪里耗时,需要去检查哪里耗时呢。我们又有哪些方法与手段检测呢?Displayed可以查看总的耗时,如果想到查看具体哪一个方法耗时太多,最简单的插桩打点,更好的方法是使用工具。运行时不能直接run,而是要通过Profile app来启动app。运行时不能直接run,而是要通过Profile app来启动app。然后通过 TopDown,Flame Chart等进行分析。点 record,stop录制启动的过程。原创 2023-02-13 10:00:40 · 526 阅读 · 0 评论 -
阿里巴巴矢量图库
iconfont-国内功能很强大且图标内容很丰富的矢量图标库,提供矢量图标下载、在线存储、格式转换等功能。阿里巴巴体验团队倾力打造,设计和前端开发的便捷工具。iconfont-阿里巴巴矢量图标库。原创 2022-11-04 10:44:06 · 241 阅读 · 0 评论 -
网易云音乐API
网易云音乐API原创 2022-08-31 18:19:26 · 219 阅读 · 0 评论 -
Android View的可见性检查之 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)
Android View的可见性检查之 getLocalVisibleRect(rect) 与 getGlobalVisibleRect(rect)转载 2022-08-10 10:18:01 · 1353 阅读 · 0 评论 -
Android将mp3转成AAC再混合到视频中
mp3转成aac合成到视频中原创 2022-08-03 17:41:49 · 905 阅读 · 0 评论 -
出现Missing ‘package‘ key attribute on element package 的问题,升级gradle引起新问题,官方给的解决办法
出现Missing ‘package‘ key attribute on element package 的问题,升级gradle引起新问题,官方给的解决办法原创 2022-01-24 19:02:40 · 6659 阅读 · 0 评论 -
从使用BottomSheetDialogFragment到放弃,改直接使用Popupwindow
我项目中有个需求,是要从下面滑出一个页面,点x往下滑走。这个页面占全屏(显示状态栏)当然,我首先想到的是用BottomSheetDialogFragment,因为我知道这就是用来做底出滑出效果的。可是用起来发现这个BottomSheetDialog用起来有这么多不爽的地方:1. 你写的布局不是是全屏的,但他默认只出来一部分。于是用这样的代码解决了val layoutParams = bottomSheet!!.layoutParamsval windowHeight = ScreenUtil.g原创 2021-12-09 14:34:43 · 1510 阅读 · 0 评论 -
在线photoshop工具网站
开发的时候有的时候需要处理些png的图片,不想装photoshop,在线处理一下,百度好多广告网站,找到一个可以网站可以用Photoshop在线编辑器_ps在线版欢迎使用由我爱学习网提供的ps在线编辑器,免去下载ps,不下载完全使用ps全部功能,在线ps照片处理,在线ps合成图片,在线ps编辑图片,在线调整和美化您的图像。https://www.5axxw.com/tools/web/ps.html...原创 2021-11-25 16:58:37 · 401 阅读 · 0 评论 -
Android几种方式实现对话框
详解Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限项目中为了实现账号多设备登录的监听 一个账号在别的设备登录时在该设备上需要弹出对话框提示 故而用到全局对话框方案一、1、在开发中有时会用到全局弹出对话框但必须在manifest中申请权限:<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" / 2、创建DialogAlertDialog.Builder b.转载 2021-05-31 15:08:02 · 701 阅读 · 0 评论 -
RecyclerVeiw使用知识汇总
由于本篇篇幅特长,特意做了个目录,让大伙对本篇内容先有个大概的了解。另外,由于有些平台可能不支持[TOC]解析,所以建议大伙可借助本篇目录,或平台的目录索引进行快速查阅。 LayoutManager 1.1LinearLayoutManager 基本效果介绍 findFirstCompletelyVisibleItemPosition() findFirstVisibleItemPosition() findLastCompletelyVisibleItemPositi...转载 2021-05-27 17:58:09 · 650 阅读 · 0 评论 -
疯狂的构造方法之代码优化--Builder构造器模式+Lombok
疯狂的类构造器原文地址:最近栈长在做 Code Review 时,发现一段创建对象的方法:Task task = new Task(112, “紧急任务”, “处理一下这个任务”, 90, 3, 1, 36, “刘主管”, 18, “客服1”, “11, 12, 13”, “客服3, 客服4, 客服5”, true, new Date(), new Date(), new Date(), new Date(), new Date(), 0, “需要尽快完成”, …);真实代码敏感性,上面的代码仅为模原创 2021-04-29 17:16:30 · 296 阅读 · 0 评论 -
Java中的各种锁和CAS+面试题
Java 中的各种锁和 CAS + 面试题如果说快速理解多线程有什么捷径的话,那本文介绍的各种锁无疑是其中之一,它不但为我们开发多线程程序提供理论支持,还是面试中经常被问到的核心面试题之一。因此下面就让我们一起深入地学习一下这些锁吧。乐观锁和悲观锁悲观锁和乐观锁并不是某个具体的“锁”而是一种并发编程的基本概念。乐观锁和悲观锁最早出现在数据库的设计当中,后来逐渐被 Java 的并发包所引入。悲观锁悲观锁认为对于同一个数据的并发操作,一定是会发生修改的,哪怕没有修改,也会认为修改。因此对于同一个数据的原创 2021-04-29 14:22:58 · 304 阅读 · 0 评论 -
Android关于Path你所知道的和不知道的一切
Android关于Path你所知道的和不知道的一切转载于https://juejin.cn/post/6844903705939050503?share_token=3ab92da7-c7fa-4a0a-af6d-147018341fd6&tt_from=copy_link&utm_source=copy_link&utm_medium=toutiao_android&utm_campaign=client_share零、前言1.canvas本身提供了很多绘制基本图形的原创 2021-04-25 18:32:54 · 755 阅读 · 0 评论 -
可以设置局部圆角的ImageView
import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.graphics.PorterDuff;import android.graphics.P原创 2021-04-25 16:47:01 · 283 阅读 · 0 评论 -
Android贴纸效果思路
Android 贴纸概述了解过自定义View的童鞋 对Canvas.drawBitmap(Bitmap, Matrix, Paint)这个函数应该不会陌生,Bitmap的位置、大小、旋转角度、扭曲程度等都由Matrix来管理,而实现贴纸效果的就需要借助这个神奇的函数。我们可以通过很多种方法获取到贴纸的Bitmap,也可以很容易的定义绘制Bitmap所使用的Paint,那么剩下我们只需要关心怎样可以借助Matrix来让贴纸随着我们的指尖翩翩起舞。device-2016-04-07-204711~1.gi原创 2021-04-25 15:29:34 · 627 阅读 · 0 评论 -
Android性能优化之启动优化实践
转载于:https://blog.csdn.net/qq_16229873/article/details/103553956前言本文将带领大家来看看启动优化相关方面的介绍以及各种优化的方法。希望你在读完本章后会有所收获。相信很多同学都听过八秒定律,八秒定律是在互联网领域存在的一个定律,即指用户访问一个网站时,如果等待网页打开的时间超过了8秒,就有超过70%的用户放弃等待。足见启动的时间是多么的重要。放到移动APP中,那就是应用启动的时间不能太久,否则就会造成用户的流失。谷歌官方曾给出一篇App原创 2021-04-25 11:13:03 · 236 阅读 · 0 评论 -
可重入锁简单理解
可重入锁,指的是以线程为单位,当一个线程获取对象锁之后,这个线程可以再次获取本对象上的锁,而其他的线程是不可以的。synchronized 和 ReentrantLock 都是可重入锁。可重入锁的意义之一在于防止死锁。实现原理实现是通过为每个锁关联一个请求计数器和一个占有它的线程。当计数为0时,认为锁是未被占有的;线程请求一个未被占有的锁时,JVM将记录锁的占有者,并且将请求计数器置为1 。如果同一个线程再次请求这个锁,计数器将递增;每次占用线程退出同步块,计数器值将递减。直到计数器为0,锁被原创 2021-04-23 10:52:33 · 705 阅读 · 1 评论 -
Java乐观锁CAS
Java:CAS(乐观锁)什么是悲观锁、乐观锁?synchronized是悲观锁,这种线程一旦得到锁,其他需要锁的线程就挂起的情况就是悲观锁。CAS操作的就是乐观锁,每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止。在进入正题之前,我们先理解下下面的代码:private static int count = 0;public static void main(String[] args) { for (int i = 0; i < 2; i++) {原创 2021-04-23 09:58:05 · 197 阅读 · 0 评论 -
协程内部串行和并行
Kotlin协程的简单用法(GlobalScope、lifecycleScope、viewModelScope)协程(Coroutine)协程就像非常轻量级的线程。线程是由系统调度的,线程切换或线程阻塞的开销都比较大。而协程依赖于线程,但是协程挂起时不需要阻塞线程,几乎是无代价的,协程是由开发者控制的。所以协程也像用户态的线程,非常轻量级,一个线程中可以创建任意个协程。kotlin协程本质上是对线程池的封装协程通过将线程切换的复杂性封装入库来简化异步编程。程序的逻辑可以在协程中顺序地表达,而底层库会原创 2021-04-22 16:06:00 · 1009 阅读 · 0 评论 -
APP稳定性问题汇总与KOOM
APP稳定性问题汇总稳定性问题2.1 卡顿/流畅度概念与原理View的绘制帧数保持60fps是最佳,这要求每帧的绘制时间不超过16ms(1000/60),如果安卓不能在16ms内完成界面的渲染,那么就会出现卡顿现象。而UI的绘制在主线程中进行的,因此UI卡顿本质上就是主线程卡顿。常见原因布局Layout过于复杂,无法在16ms内完成渲染。过度绘制overDraw,导致像素在同一帧的时间内被绘制多次,使CPU和GPU负载过重。View频繁的触发measure、layout,导致measur.原创 2021-04-21 14:39:28 · 915 阅读 · 0 评论 -
领导讲话演讲稿,5个模板,即拿即用!(建议收藏)
领导万能讲话稿,5个模板,即拿即用!(建议收藏)讲话材料是领导在一个时期、一项工作中主要思想和意向的反映,具有重要的导向作用。从某种意义上说,一个讲话就是一个信息“窗口”,它告诉人们上级党委机关正在筹划和实施哪方面的工作,领导在关注什么,对某个问题、某项工作,是怎样认识、如何筹划的。一个好的讲话稿,可以使下级及时准确地了解和掌握上情,有的放矢地开展工作。反之,就可能使下级感到不知所云,造成工作思路上的不清,甚至产生误导。讲话材料是领导参与政务活动的一种主要方式,直接影响到领导的形象和威信。像部署动员、总原创 2021-04-16 17:15:00 · 873 阅读 · 1 评论 -
Android热修复简单实现及双亲委派机制
本文简单介绍 热修复的一种实现,插件化原理也可以参考。Android系统中的类加载器Android系统屏蔽了ClassLoader的findClass加载方法,那么它自己的类加载时通过什么样的方式实现的呢?Android系统中有两个类加载器分别为PathClassLoader和DexclassLoader。PathClassLoader和DexClassLoader都是继承与BaseDexClassLoader,BaseDexClassLoader继承与ClassLoader。Android为什么原创 2021-04-15 16:31:04 · 757 阅读 · 0 评论 -
java模板方法设计模式
《JAVA设计模式》之模板模式(Template)在阎宏博士的《JAVA与模式》一书中开头是这样描述模板方法(Template Method)模式的:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。模板方法模式的结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。模板方法模式原创 2021-04-15 10:48:33 · 171 阅读 · 0 评论 -
Android 逆向之smali
几个概念APKAPK其实就是一个ZIP压缩包,将APK后缀改成ZIP后就可以解压出APK内部文件。Dalvik字节码Dalvik是google专门为Android操作系统设计的一个虚拟机,经过深度的优化。虽然Android上的程序是使用java来开发的,但是Dalvik和标准的java虚拟机JVM还是两回事。Dalvik VM是基于寄存器的,而JVM是基于栈的;Dalvik有专属的文件执行格式dex(dalvik executable),而JVM则执行的是java字节码。Dalvik VM比JVM速原创 2021-04-12 17:58:17 · 1191 阅读 · 0 评论 -
再次理解一下快速排序
public class HelloWorld {public static void main(String[] args) { int[] number = {4,6,1,2,5,8,7,0,9,3}; print(number); sortArray(0,number.length-1,number); print(number); }public static void sortArray(int start,int end, int[]number){ if(s原创 2021-04-07 15:28:14 · 91 阅读 · 0 评论 -
解决冲突的两种解决套路
/**https://blog.csdn.net/caifengyao/article/details/65437695?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-原创 2021-03-25 15:58:22 · 254 阅读 · 0 评论 -
ViewTreeObserver应用实例
Android实现自定义引导页(实现跟随式小圆点效果)实现效果图如下输入图片说明具体实现过程可参看链接:http://www.jianshu.com/p/adb21180862a这里主要看下实现跟随式小圆点效果的思路及知识点实现小圆点动态跟随的思路:首要的是获得两个点之间的距离【mDistance 】,然后根据页面的移动,通过设置小圆点的 leftMargin 实现动态跟随。【根据mDistance * (position + positionOffset) 可以实时更新小白点的位】。需要注意的原创 2021-03-24 10:57:25 · 134 阅读 · 0 评论 -
动态代理一个很好的例子
动态代理说到动态代理,总是离不开静态代理和代理模式。静态代理总是要写接口,然后代理类和被代理类实现该接口,客户端通过代理类使用接口提供的功能,而代理类把功能实际的工作转到被代理类。问题在哪里,每次我们都懂得去实现代理类和代理类,如果很多个接口,这样会很累的,毕竟程序员都是懒的。再说如果这样,用Retrofit这种第三方库,怎么知道用户创建什么样的接口,怎么去实现他们功能?那就是利用Java的动态代理技术了。动态代理在使用上也可以理解是一套模板。首先,定义接口,以及实现类,也就是我们对外提供的功能。pu原创 2021-03-23 15:53:33 · 177 阅读 · 0 评论 -
Android Jetpak Compose快速上手
Compose 介绍Jetpack Compose发布也快有一年的时间了,虽然目前仍是DEV阶段,但是距离可用已经不远了。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度(可以参考几乎一模一样的Flutter,开发速度确实很快)。Jetpack Compose对于没有接触过声明式UI的小伙伴可能会学习曲线有点陡峭,对于已经能熟练开发Flutter应用的小伙白来说几乎没有难度。(Compose就是参考flutter的模式开发的,代码中还可以看到F原创 2021-03-19 11:08:08 · 627 阅读 · 0 评论 -
kotlin协程简介
Kotlin Coroutines(协程) 完全解析(一),协程简介Kotlin Coroutines(协程) 完全解析系列:Kotlin Coroutines(协程) 完全解析(一),协程简介Kotlin Coroutines(协程) 完全解析(二),深入理解协程的挂起、恢复与调度Kotlin Coroutines(协程) 完全解析(三),封装异步回调、协程间关系及协程的取消Kotlin Coroutines(协程) 完全解析(四),协程的异常处理Kotlin Coroutines(协程) 完原创 2021-03-19 10:09:22 · 661 阅读 · 0 评论 -
Android一个例子看清线程与协程的区别
package com.example.coroutineimport android.os.Bundleimport android.util.Logimport androidx.appcompat.app.AppCompatActivityimport kotlinx.coroutines.*class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) {原创 2021-03-18 19:13:02 · 549 阅读 · 0 评论 -
Json数据异常兼容处理
跟后端定义联调接口,总会碰到一些异常的情况,比如本来应该返回一个数组的,由于数据库没查到东西后台就给返回了一个空字符串,由于我们前端是用数组来接受数据的,返回了一个字符串,前端就会出错闪退,此时要么跟后端撕逼,还有种方法就是我们自己兼容,我就说说后面的方法。import com.google.gson.Gsonimport com.google.gson.GsonBuilderimport java.lang.reflect.Typeimport java.text.DateFormat/**原创 2021-03-18 15:23:23 · 528 阅读 · 0 评论 -
MotionLayout 一个坑了一天的问题 visibility不起作用
根本原因 :没有详细看 原文里有解释 我就不解释了解决办法在MotionScene动画文件中 把这个id排除一下 增加下面代码<ConstraintSet android:id="@+id/start"> <Constraint android:id="@id/viewId"> <PropertySet app:applyMotionScene="false" app:visibilityMode=原创 2021-01-29 22:01:45 · 1868 阅读 · 0 评论