- 博客(211)
- 资源 (12)
- 收藏
- 关注
原创 android自定义view之星星动画
先上效果图其实上边效果分为几个部分,一个部分是多个小星星四处扩散,第二个部分是一个小星星从小变大,还有一个是实心圆的动画。代码如下第一:所有的小星星动画public class StarView extends View { private Paint mPaint; private Bitmap mStar; // 星星图片 private ...
2019-09-26 11:56:01 913
原创 android设计模式之适配器模式
早期使用listview的时候,就需要设置adapter,但是当时一直不明白为何要叫adapter?而且也觉得我们自己设置布局,我们自己绑定数据,就能显示到列表上,觉得写的很神奇。直到后来有人跟我说了适配器模式。我才渐渐明白…定义将一个类的接口,转变为客户希望的另外一个类的接口。适配器模式使得原本因接口不兼容不能在一起功能的类可以在一起工作。其实用大白话来解释就是:我已经定义了标准,...
2018-12-28 22:04:41 172
原创 android 自定义view缩小放大拖动小人
效果图如下:刚开始产品说要做这个效果的时候,一脸懵逼,光是围绕屏幕中心原点动态添加view就让人头疼。况且还要进行缩放和拖动,小人头上还有个标志位,然后百度找缩放的例子,找了一圈之后,慢慢的发现效果图需要用到的几个技术点不过是如下 1:如何对所有的view进行缩放? 2:对view进行拖动? 3:小人+头顶的标志如何实现走动效果?并且一直围绕建筑物走动? 4:如何动...
2018-07-01 11:33:11 5643
原创 android 自定义view之掷骰子小人走动的游戏
最近产品经理出了一个幺蛾子,说要通过一个小游戏来吸引用户获取奖励,当时过需求的时候,内心何止是一万个草泥马奔腾而过,简直是一亿个草泥马。过需求之后就冷静下来讨论该怎么实现,做完之后发现,其实也没有那么难!总的效果如下:因为csnd上传最大不能超过2M所以把gif图放到github上了效果图仔细分析需求中的几个难点 1.小人走动效果 2.路线布局 3.小人走动的四个方向 4.动画效果:红包小...
2018-06-10 12:29:20 2472
原创 android 仿照支付宝蚂蚁森林
本文在大神的基础上添加了修改了一些功能先说下思路1.如何让小球不重叠分布?2.小球上下移动这个可以具体看原文作者分析本文主要分析第一点刚开始想法是,每次随机生成一个x,y位置,但是这保证不了小球重叠的问题。然后受到原文作者启发,其实我们可以固定前面6个小球的位置,让它们处于屏幕中心,然后剩余的4个小球再随机的从我们定义好的位置中获取。这样就能保证10个小球既不会重叠...
2018-05-13 12:11:06 4479
原创 android 最简单的饼状图
录制的gif图有点渣,但是实际效果还是可以的。因为项目需要绘制饼状图,就很简单的饼状图带一个选中的效果,本来也想使用MPAndroidChart这个库的,但是觉得就实现一个效果引用整个库,对于一个有态度的程序员来说,内心是拒绝的(我不是装逼的人),所以自己自定义了一个,写的不好仅供参考。要做这么一个效果,我们应该分几步来写,1.先做一个静态的饼状图2.然后加上属性动画,有一个绘...
2018-03-20 18:07:47 6009 6
原创 python执行脚本的时候获取输入参数
当我们执行脚本的时候,通常都会执行 python test.py -i xxx -o xxx,这里的 -i 和 -o 都是输入参数,这到底是怎么传递的呢?最后执行代码的时候 python xxx.py -i aaa -o bbb。这样就会输出aaa 和 bbb。
2024-01-26 18:09:20 338
原创 解决 The option ‘android.useNewApkCreator‘ is deprecated.
An exception occurred applying plugin request [id: 'com.android.application']> Failed to apply plugin 'com.android.internal.application'. > The option 'android.useNewApkCreator' is deprecated. The current default is 'true'. It was removed in
2023-11-03 17:28:28 282
原创 c++基础二
字符串,这里Flavio只有6个字符,却用了一个数组长度是7的字符串数组,是因为字符串最后一个字符必须是0,它是字符串的终止符号,我们必须给它留个位置。当我们用C编程时,它对我们有很大的帮助,它是C标准的一部分,就像语言本身,编译器和标准库一样。这只是一个开始,我提到了这两个操作,是因为它们是最常见的两个,预处理器能做的事情还有很多。另外一种常量的定义方式,不需要添加类型,也不需要使用=符号,并且可以省略末尾的;sizeof运算符返回,你传入的操作数的大小,也可以传入变量,甚至是类型也可以。
2023-08-16 11:19:56 83
原创 frida native hook简单demo
注意:最开始的时候,写的demo,一直不能hook,因为我在activity页面初始化的时候就调用so里面的方法了,后来我发现需要加一个按钮,然后点击按钮再去调用so里面的方法,这个时候就能hook了。记录frida hook native的笔记。当前frida的版本是16.1.0。
2023-07-28 17:20:49 219
原创 frida的记录
注意的是,安装的时候需要一台root过的手机,然后下载安装到手机的时候记得是下载server的。chmod 777 *(或者chmod 777 frida)本文记录一下使用frida,至于安装过程则可自行搜索。然后是测试的js代码,hook1.js的全部代码是。执行hook的frida命令是下边的。首先需要开启frida服务。
2023-06-26 14:31:08 96
原创 java.util.zip.zipexception invalid entry compressed size (expected 36586 but got 37005 bytes)
java.util.zip.zipexception invalid entry compressed size
2022-05-10 19:20:34 985
原创 GitLab Remote: HTTP Basic: Access denied. fatal: Authentication failed
最开始是报如下的错bash: /dev/tty: No such device or addresserror: failed to execute prompt script (exit code 1)经过百度谷歌一顿搜索,大部分文章都说是凭证的问题,但是我反复检查发现凭证没有问题,然后就试着直接修改.git下边的config文件里面的路径,然后就报如下的错GitLab Remote: HTTP Basic: Access denied. fatal: Authentication failed
2022-04-21 12:04:47 531
转载 arouter 自定生成autowired
原文地址Evil Mouth’s BlogARouter @Autowired 自动注入May 31, 2020前言ARouter 有一个@Autowired 的注解,能自动帮我们赋值一些变量,例如public class MainFragment {@AutowiredString name;protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Ar
2022-03-11 17:30:23 647
原创 gradle笔记
最近跟gradle打交道比较多,tinker也用到了,然后混淆过程还有写一些脚本都需要用到gradle,所以零零碎碎记录一些gradle的知识点,不然经常去搜索很容易忘记,本文是方便自己后边查看,有写的不好的地方请勿见怪。Gradle执行的时候遵循如下顺序首先是解析settings.gradle来获取模块信息,这是初始化阶段然后配置每个模块,配置的时候不会执行task配置完成之后,有一个重要的回调project.afterEvaluate,这个表示所有模块配置完成,可以准备执行task了(可以.
2022-02-07 21:24:43 1227
转载 声明主要 DEX 文件中必需的类
为 MultiDex 应用构建每个 DEX 文件时,构建工具会执行复杂的决策制定以确定主要 DEX 文件中需要的类,以便您的应用能够成功启动。如果主要 DEX 文件中未提供启动期间需要的任何类,则您的应用会崩溃并出现 java.lang.NoClassDefFoundError 错误。对于直接从您的应用代码访问的代码,不应发生这种情况,因为构建工具可以识别这些代码路径。但是,当代码路径的可见性较低时(例如,当您使用的库具有复杂的依赖项时),可能会发生这种情况。例如,如果代码使用自检机制或从原生代码调用 J
2022-02-07 09:24:52 146
原创 记录几个常用的adb命令
1、adb logcat -b events > eventlog1 将系统日志打印输入到eventlog1文件中2、adb logcat -b events | findstr “am_proc_died | am_proc_start” 查看进程的启动信息,下边会记录每个进程的启动信息和死亡信息3、adb shell ps 查看所有进程4、adb shell ps | findstr “com” 查看所有以com开头的进程5、adb shell pm list packages 查看手机
2022-01-22 11:43:59 2373
原创 gradle 脚本扫描文件夹并把文件内容写到新建txt中
快要下班的时候,小哥给安排一个任务,需要把一个工程下边的所有的类导入的包给查找出来,我一想,我草,这尼玛,这个工程这么多文件夹,文件夹下还有文件夹,然后还有很多类,这个要是自己弄,生产队的驴也受不鸟,赶紧写了个脚本自动扫描,十分钟搞定,剩下的时间就可以愉快的摸鱼啦!代码如下task("scan") { println("开始扫描") def list = [] // 你要扫描的文件夹路径 def fileDir = file("F:\\workApp") fileD.
2021-11-09 20:12:34 2404
原创 gradle复制文件到你的build文件夹下
接到需求是,复制一个apk到build文件夹的assets文件夹下,我们都知道当我们点击clean的时候,build文件夹就会被清理,而且build文件夹下的assets文件夹并不存在,这个里面会根据application和library不同assets文件夹也会不同,具体看如下分析application下,build文件夹的assets文件夹名称叫做 merged_assetslibrary下,build文件夹的assets文件夹名称叫做library_assets全路径是在build/inte.
2021-11-09 17:24:03 3197
原创 android 插件化之不支持constraintLayout属性
最近有做插件化相关的东西,发现插件对constraintLayout的app:自定义属性不支持,我没找到真正解决问题的原因,临时思考得出的一个应对方案,但是能解决宿主和插件都引用constraintLayout的时候所引发的问题。背景在写demo的时候发现,宿主引用了constraintLayout,插件也引用了constraintLayout,但是插件里面使用constraintLayout的app:这种自定义属性就失效,虽然有打断点跟踪,但是没发现有什么不同之处,最主要的应该是跟Resource.
2021-11-05 10:31:57 1112 1
原创 gradle创建工程
之前对gradle脚本不熟悉,最近因为工作需要才学一点点基础知识,不过也踩了一些坑,记录一下,网上其实很多文章写的很好,有时候我们根据某一篇文章然后实战的时候,还是会出现问题,这个时候就需要看怎么去解决了。坑一Unable to load class这个问题找的时间最久,字面意思就是,我们在其他module使用我们的gradle工程时候,找不到我们自定义的groovy类。可能出错的地方有:1.包名要手动添加2.properties文件里面的路径也要写对3.我们的包名必须要写在groov.
2021-11-05 10:20:08 282
原创 android对文件进行加密
最开始想的是对apk进行加密,但是搜到的资料都是对dex层面的加密,后来转念一想,apk也可以被看做是一个普通的文件,普通的文件其实是可以使用AES进行加密的(AES比DES安全性和速度要更好,属于对称性加密里面很好的了),代码如下fun main(args: Array<String>) { // key也可以采用下边的FileAESUtil.getAutoCreateAESKey()方法自动生成 val key = "asdfghjkl" val content = .
2021-11-05 09:37:12 3514 2
原创 gradle复制文件到指定目录并且重新命名
Gradle复制apk到其他module下,并且重新命名// 直接在project下的build.gradle文件下加下边代码就好this.project.afterEvaluate { project -> project.tasks.each { task -> task.doLast { def fromFile = "${project.getProjectDir().path}\\plugindemo1\\build\\outputs
2021-11-03 15:15:36 1470
原创 Glide的缓存原理
Glide的源码比较复杂,功能也比较多,我看这个框架的时候,结合一位大佬写的博客,看了一个多月,才马虎看明白Glide的缓存原理1.我们都知道Glide是一个很优秀的框架,用起来非常简单,功能强大,越是用起来简单的东西,源码就越复杂,下边我们来扒一扒它的源码我们使用的时候,直接使用Glide.with(Context).load(url).into(imageview)我们直入主题,核心代码就在Engine这个类的load()方法中public synchronized <R> .
2021-08-31 15:32:49 156
原创 tcp四次挥手为何最后要等待2MSL时间?
之前别人问过的一个问题,说是四次挥手为何要等待2MSL时间?首先我们需要明白,MSL是表示什么意思?其实是maxinum segment lifttime(报文最大存活时间),tcp发出的包是有一个存活时间的。我们先来复习下tcp 的四次挥手,用C(client)和S(server)来代替1.C发出报文,说请求关闭,标识位为FIN,然后客户端进入一个等待状态,表示客户端没有数据发送给服务端了。2.S收到C的报文之后,会回复C一个报文,标志位为ACK,意思是我收到了,服务端进入等待关闭的状态。.
2021-08-30 11:29:40 891
原创 java 等待其他线程执行完成的几种方式
等待其他线程执行完成的几种方式方式一使用Thread.join()方法public class CalculationThread implements Runnable { private int count; public CalculationThread(int count) { this.count = count; } @Override public void run() { try {
2020-10-10 17:59:35 1055
原创 android 枚举性能问题
面试题:都说枚举性能不好,不好在哪里?现在有什么优化的方案如何解决的?首先我们可能要了解一下枚举,以前看性能优化的文章,都说不要使用枚举,因为枚举占用内存大,占用apk空间大,但是一直也不知道原因。109年谷歌官方视频有说,使用枚举会让apk比原来要大大约13倍的空间。有人可能会有疑问,你咋知道是13倍呢?大兄弟,消消气,是不是13倍,我们可以自己新建一个工程,然后打包,然后再加入枚...
2019-12-28 17:01:22 678
原创 Glide使用之工厂方法模式(ModelLoader/DataFetcher)
一直想解析一下Glide框架,奈何这个框架太强大,最近看了一段时间,总算是摸到一点边,现在再回过头来想郭神花了半年时间才把这个框架看明白,对这类人真是膜拜。最近在学习工厂方法模式,这里先对工厂方法模式做下介绍定义:提供一个创建对象的接口,让子类决定实例化哪一个类。也就是说将实例化延迟到子类。知道工厂方法模式的定义之后,我们得知道在哪里使用它,也就是说实际开发中有哪些场景能用到它,于...
2019-12-23 21:23:38 848
转载 SSL peer shut down incorrectly
当我们项目中出现标题这种错误的时候,常规操作就是clean一下工程,然后再重新Sync一下,后边发现还是不好使,一般的原因是有一些jar包下载不下来,翻墙也下载不下来,这个时候就要使用一下镜像了。具体操作如下buildscript { repositories { // 第一个地方 google() maven { url 'http://maven.al...
2019-11-01 11:55:11 581
原创 Error:Program type already present:android.R$mipmap解决方案
当我们程序报上边的错的时候,我们总以为是mipmap冲突了,所以一直找mipmap文件看看哪些冲突了,其实并不是mipmap问题。这类的错误还有比如说报Error:Program type already present:android.RcolorError:Programtypealreadypresent:android.permisscolorError:Program type ...
2019-11-01 10:08:06 634
原创 Android单例模式总结
定义保证一个类只有一个实例,并提供一个全局访问点具体写法单例模式一般分为两种形式,第一种是饿汉式,第二种是懒汉式。(当然有很多其他的博客或者书写的说,单例模式还分为其他的什么枚举啊等形式,但是我们这里只讲主流的,也就是我们项目中用的最多的两种形式)我们先来看看第一种饿汉式public class Singleton_EHanShi { public static void ma...
2019-10-16 14:17:04 182
原创 记录一个常用类用来获取mac地址的
public class MacUtil { private static final String marshmallowMacAddress = "02:00:00:00:00:00"; private static final String fileAddressMac = "/sys/class/net/wlan0/address"; public static...
2019-09-18 11:09:43 495
仿Android联系人SideBar排序,根据拼音A-Z字母快速导航联系人姓名,以及输入搜索条件过滤,显示姓名的文字图片,添加挤压动画
2016-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人