自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 资源 (1)
  • 收藏
  • 关注

原创 自定义gradle插件实现不同版本app的听云配置文件

问题由来在做项目的时候,需要接入听云监测系统,因为我们的app分为 debug->preRelease->release 版本。这样的话,需要再在三个不同的版本平台同时接入。不过听云的接入有一点比较坑的地方是需要配置tingyun.properties文件再app目录,每次手动去新建肯定是不合适的,自然而然的就想到了gradle打包脚本,不过一开始是写在gradle.properties文件里的,具体代码如下File TingyunProperties = new File("${pro

2020-06-17 22:36:34 418 1

原创 记录一次xx应用的伪破解(三)(去除开屏广告和弹框广告,去升级逻辑)

由于和之前的破解方式一毛一样,这里不再赘述,可参考前面两篇文章。结语话说这个app的防逆向功能做的真的很差劲,全是java编程,所以逆向之后,虽然只做了一层混淆,但是仔细分析后还是能把逻辑理清楚,我也破解过其他app,唯独这个让我大跌眼镜。软件的攻防是个长久的战争,这里总结一下我的攻防心得:1. 一定要混淆,但是千万不能相信混淆。记得刚开始接触android的时候,我就想破解别人的app,...

2019-06-03 17:37:55 1993

原创 记录一次xx应用的伪破解(一)(去广告 增加vip功能)

为啥叫伪破解因为本人觉得没有太大的技术含量,这次破解没有涉及到so加密,加壳脱壳 IDA动态调试so等技术要点,纯粹的属于静态分析。实现了哪些功能VIP的投屏功能VIP的下载功能(目前有bug,算是没实现吧)去除开屏的3秒广告去除穿插广告破解签名验证去除代理检测杂七杂八工具所谓工欲善其事必先利其器,良好的工具可以为我们节省大量的时间。本文涉及到的工具有androidKi...

2019-05-30 15:14:43 4806 1

原创 利用注解和APT生成模板代码

这里写自定义目录标题开题注解的核心方法APTJavaPoet为什么要写这么一套代码?apt-annotaitionapt-processorapp的build.gradle自定义我们的注解ViewHolder创建核心代码 ViewHolderProcessor整体架构遇到的问题代码生成办法开题注解在很多框架中频繁的使用,比如大名鼎鼎的ButterKnife,ButterKnife运用的...

2018-12-14 16:28:03 658

原创 为什么HorizontalScrollView嵌套一个子View,他的match_parent属性会失效,浅析View的测量工作

为什么HorizontalScrollView嵌套一个子View,他的match_parent属性会失效问题的抛出 我们在开发的过程中,经常会用到HorizontalScrollView,通常情况下我们还需要在里面嵌套一个ViewGroup,并将其设置为match_parent,但是这个属性一定是无效的。我们需要重新设置 fillViewport属性为true。这样才会得到我们要的效果。...

2018-08-19 22:04:06 1353 1

原创 我重写了onInterceptTouchEvent(ev)方法,但是为什么Action_Move分支没执行?浅析安卓事件分发。

前言说到安卓的事件分发,大多数人都很难说的很清楚,当然也包括我,之前只是记住了几个结论,什么隧道传递,冒泡处理,什么 dispatchxxx是用来传递事件的,onInterceptxxx是用来拦截事件的,onTouch事件是用来处理事件的,说的门门是道,但是在自己实现逻辑的时候依然会遇到比较懵逼的问题。 现在有做一个需求,是图片的下拉关闭功能,现在很多app都有这个功能,体验性很好,就像下面...

2018-07-18 20:19:17 3832 1

原创 自定义View实现轮播层叠View

照例,先上图片看效果 github上倒是有不少类似的效果库,不过对于这个功能来说,多少有点写的复杂,我们没必要因为这个功能区down一个库下来,所以,自己动手,丰衣足食。仿写的Adapter模式~ViewGroup的选择自定义ViewGroup无外乎两个重要的方法,onMeasure()和onLayout(); 至于其中含义,可参考网上资料。 看过github上的一些库,大部分是...

2018-07-16 15:48:10 1562

原创 popwindow 在安卓7.0上显示位置错误以及在6.0下点击外部不能消失的情况解析

popwindow在日常使用的过程中频率很高 ,一般用起来也是得心应手,但是也是有很多坑存在的,在这个版本的迭代中就遇到了一些问题,解决起来很简单,但是以后开发中肯定要注意的popwindow 出现的View not attached to window manager在这个版本的迭代中,产品要求了很多xx秒自动消失的需求,需求很简单,洋洋洒洒写了如下代码: PopupWindow p

2017-08-10 19:50:46 1260 1

原创 从ViewPager嵌套RecyclerView再嵌套RecyclerView看安卓事件分发机制

这两天伟大的PM下了一个需求,在一个竖滑列表里实现一个横向滑动的列表,没错,又是这种常见但是又经常被具有着强烈责任心和职业操守程序员所嗤之以鼻的效果,废话不多说,先上图: 实现的方式很多,因为项目中已经ViewPager+RV实现基本框架,所以现我也选择再添加一个RV实现相应的效果。不过在写代码之前,先预估一下这个效果所有的坑。 VP是横向滑动的,RV是竖向滑动的,那么现在再添加一个横向

2017-01-20 17:30:15 12667 12

转载 HashMap分析

这次主要是分析下HashMap的工作原理,为什么我会拿这个东西出来分析,原因很简单,以前我面试的时候,偶尔问起HashMap,99%的程序员都知道HashMap,基本都会用Hashmap,这其中不仅仅包括刚毕业的大学生,也包括已经工作5年,甚至是10年的程序员。HashMap涉及的知识远远不止put和get那么简单。本次的分析希望对于面试的人起码对于面试官的问题有所应付一、先来回忆下我的面试过程问:

2016-09-26 15:05:34 627

原创 写代码仅仅是“写”代码吗?

写代码仅仅是“写”代码吗?前言最近一直忙于新功能的开发,一直没有时间写博客,之前说的坚持写博客又被中断了,我的错。 话说在今年三月份我被调到了一个新的部门,说新的 也不是很对,因为这个部门是我们公司最老的部门了,因为缺开发,所以把我调了过来。 看到标题,很多人都会不假思索的在心里默道,肯定不是”写”代码,因为还有逻辑等巴拉巴拉,但是又说不出个所以然,那么今天我们就来扯一扯代码究竟该怎么写。目录写

2016-09-23 15:17:22 1068 7

原创 RecyclerView实现分组展示信息

前言转载请注明出处 http://blog.csdn.net/wzlyd1/article/details/52292548 一直在鸿洋大神的安卓群里水群,渐渐的loader和安卓弟等人都成长了起来,还记得当初他们清纯的模样。小L在群里不水了,安卓弟成长为CTO了,只有我依然默默无闻,于是决定再写博客了,之前不写,一是因为工作比较忙,二是因为我水平有限,简单的不想写,因为写了也没用,网上d...

2016-08-23 18:33:24 25770 16

原创 仿写BaseAdapter而想到的观察者模式-----思考

仿写BaseAdapter而想到的观察者模式以及思考最近在读一篇博客的时候,博客地址(强烈建议先阅读该篇博客再看此博客)看到这个哥们写的代码不太像我们平时用的adapter,我想,既然它都定义成adapter了,为什么不按照规范来,按照我们平时的用法,adapter.setData();adapter.notifyDataSetChanged(),就可以直接来显示内容了,这哥们写的不是这样的,看他的

2016-03-31 17:21:40 782

原创 关于九宫格密码的思考

关于九宫格密码的思考 网上有很多关于9宫格密码的资料,比如这篇博客,http://blog.csdn.net/abren32/article/details/48683625,还有视频学习资料,讲的都很好,但是对于我这种菜鸟来说,看起来还是有很多困难的,不知道是他们太牛了不用讲这些细节点还是我太笨了看不懂,我自己把这个代码写了一遍,发现很多小的知识点还是很重要的,对于初学者来说,搞清楚这些要比懂A

2015-10-05 18:45:52 1578 3

原创 ClickableSpan空白区域也能点击的问题

ClickableSpan是安卓开发过程中经常使用的一个类,只要有超链我们就能看到他的身影,使用方式也很简单,这里就不做介绍了,效果就是下面这个样子通常情况下我们这么使用并不会有什么问题 ,但是测试却对我报了个bug,说,当@xxx之后,点击空白区域也会响应点击事件,这个是我没有想到的,所以特此记录一下。我复现了一下应用场景:当布局是这种方式时候,可以看到点击空白区域的时候,也会响应事件:可以看到,我们在点击外部空白区域的时候确实有事件响应了,这个不是我们需要的.需要修改一下。问题的原因就出现

2020-08-17 19:11:22 1194

原创 Overload resolution ambiguity. All these functions match. kotlin 开发问题日常记录

平时在开发的过程中,如果我们用定义了一个泛型类,同时定义了两个重载方法,比如:package com.companyclass ListT<T> { fun add(position: Int) {} fun add(t: T) {}}然后我们在使用的过程中如果这么使用package com.companyimport java.io.Serializableobject Main { @JvmStatic fun main(args: Arra

2020-08-04 14:51:39 4425

原创 Kotlin学习之双冒号

Kotlin学习之双冒号::定义a::method 和 a.method 一样吗最新在复习kotlin相关的知识,看到一个平时不注意的点,就是::的使用,平时开发使用都是IDE提示,顺手一改,今天复习看到了这个知识点,就顺手复习记录一下::定义Kotlin 中 双冒号操作符 表示把一个方法当做一个参数 ,传递到另一个方法中进行使用,通俗的来讲就是引用一个方法。先来看一下例子:object KotlinLearn { @JvmStatic fun main(args: Array<S

2020-06-17 12:26:00 2092 1

原创 Android端接入NewRelic第三方性能监测框架

newRelic简介newRelic是一款国外产品,类似于国内的监控平台: OneAPM 和 听云 ,在Android平台上提供crash监控,网络请求监控,app启动次数等,如果你对国内的监控平台了解的话,功能基本类似,所以接入方式也几乎一样。但是商业版很贵~~,所以我们后续又换了国内的听云,这里仅做一下记录。AndroidStudio Gradle方式接入账号注册申请就不多言了。在账号...

2019-08-30 15:05:06 1129

转载 Android应用逆向——分析反编译代码之大神器

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/CharlesSimonyi/article/details/52027563  如果说使用dex2jar和JD-GUI获得了一个APP反编译后的JAVA代码,再结合smali代码调试器来进行调试还不够爽,不够畅快的话,下面将介绍一个帮助分析代码执行流程的大神器。这个神器优点很多,不过遗憾的是它有一个致命...

2019-06-04 11:40:36 1485 1

转载 Java 虚拟机

一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存二、垃圾收集判断一个对象是否可被回收引用类型垃圾收集算法垃圾收集器三、内存分配与回收策略Minor GC 和 Full GC内存分配策略Full GC 的触发条件四、类加载机制类的生命周期类加载过程类初始化时机类与类加载器类加载器分类双亲委派模型...

2018-11-10 19:26:12 141

原创 Constraint Layout 动画

参考掘金的这篇文章,写的很好Constraint Layout 动画 | 动态 Constraint | 用 Java 实现的 UI(这到底是什么)[第三部分]

2018-11-10 18:19:12 386

原创 ConstraintLayout利用百分比属性来解决一些简单的适配问题(四)

接着上一篇文章讲ConstraintLayout属性之Group,GuideLine(三)先前的几篇文章只是讲了一下ConstraintLayout的基本属性,都很简单,感觉没有眼前一亮的感觉,接下来要讲的东西也很简单,但是会很实用,尤其是在屏幕适配方面,如果运用的灵活,简直美滋滋。在平时写布局的时候我们通常都是以dp为单位的,这也是google推崇的一种方式,但是dp并不能完全适配所有的手...

2018-11-07 18:19:33 20292

原创 ConstraintLayout属性之Group,GuideLine(三)

在上期博客中[ConstraintLayout的居中显示以及常见问题剖析](https://blog.csdn.net/wzlyd1/article/details/83655680)简单介绍了一下居中问题和字符串末尾显示…问题,其实就是写一下新属性在日常使用中的正确姿势。上期还有两个问题没有解决,一个是1.在某些逻辑下我要隐藏很多控件,为了方便,我在传统布局里可以将这些控件设置在一个Vie...

2018-11-07 17:23:32 5644 1

原创 ConstraintLayout的居中显示以及常见问题剖析(二)

开局一张图,博客继续编上一期博客中,我们介绍了ConstraintLayout的基本属性以及用法ContraintLayout的基本属性与用法在结尾抛出了几个问题1. 两个控件之间怎么居中对齐?2. 我设置了android:ellipsize=&quot;end&quot;为什么没生效3. 在某些逻辑下我要隐藏很多控件,为了方便,我在传统布局里可以将这些控件设置在一个ViewGroup里,就可以达到隐藏...

2018-11-03 12:26:44 14940

原创 ContraintLayout的基本属性与用法(一)

开局一张图,博客全靠编:该布局如果以传统布局方式来写的话是这样的(由于显示逻辑问题实际情况更复杂,demo略做精简)&amp;amp;amp;amp;amp;amp;lt;?xml version=&amp;amp;amp;amp;amp;quot;1.0&amp;amp;amp;amp;amp;quot; encoding=&amp;amp;amp;amp;amp;quot;utf-8&amp;amp;amp;amp;amp;quot;?&amp

2018-11-02 12:34:26 1195 1

原创 ContraintLayout 开篇

ContraintLayout 是谷歌在2016年IO大会上新出的一个组件,今年都8012年了,应该有很多开发者在使用这个组件了,不过我也不确定,或许在很多大公司里由于项目原因,并没有使用该控件或者该控件使用率很小。至少我是我们组第一个使用该控件的,使用之后的感触:谷歌爸爸真牛逼。不过话说,都8012年了,我才使用这个控件,落伍了。关于ConstraintLayout的性能优势,可以看谷歌爸爸...

2018-11-02 10:43:40 315

原创 java多线程学习之volatile 和synchronized

java多线程学习之volatile 和synchronized安卓开发对多线程的使用很少,在平时业务开发过程中用的最多的多线程就是开启一个子线程进行数据请求操作,除此之外,很少再用到多线程。但是不用不代表着不需要了解。多线程并发是个很深奥的问题,也是很重要的知识点,所以平时虽然用的少,但是也会看关于多线程的知识点。最近学习这两个知识点,做一下总结。在深入了解这两个属性之前,先了解3个名词。...

2018-10-28 16:36:38 331

转载 Java中关于内存泄漏出现的原因以及如何避免内存泄漏

 来自:移动开发 - CSDN博客频道作者:Walter_Mr链接:http://blog.csdn.net/wtt945482445/article/details/52483944 Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏大家都不陌生了,简单粗俗的讲,就是该被释放的对象没有释放,一直被某个...

2018-10-11 19:38:58 247

转载 当你输入一个网址的时候,实际会发生什么?

原文:http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/  作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~...

2018-10-11 19:37:51 173

原创 一种简单的实现标签标题的混排方式

在很多情况下,尤其是电商类网站,都会有促销活动或者其他一类的活动,在UI设计上通常会出现以下设计: 以及以下设计: 针对第一种情况,标题和标签在一行且标题只有一行的情况下,我们可以使用两个控件,一个imageView(simpleDrawView),一个textView,并设置他们的位置关系即可。(或者drawableLeft) 但是大多数情况下并非是这样的,而是和图2一样,这样设置两个...

2018-05-11 15:30:08 512

转载 Android 应用点击图标到Activity界面显示的过程分析

分析这个过程不是单纯为走一遍函数调用的流程,而是更好的理解平常用到的一些方法、对象的初始化时间,对象创建的个数,方法的先后顺序,以及每个类,方法背后的作用和目的。主要是一下几个问题:Application是什么时候创建的,每个应用程序有几个Application 应用的资源路径什么时候初始化的 应用中ContextImpl的个数 Application.attach(),Activity.at

2017-08-11 17:50:54 342

转载 泛型的一些知识点

泛型,一个孤独的守门者。大家可能会有疑问,我为什么叫做泛型是一个守门者。这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。文章开始的地方,先给大家奉上一道经典的测试题。List l1 = new ArrayList(); List l2 =

2017-08-10 16:51:49 352

转载 移动端的网络优化

介绍下针对移动端的网络优化,不限于 Android,同样适用于 iOS 和 H5。一个网络请求可以简单分为连接服务器 -> 获取数据两个部分。 其中连接服务器前还包括 DNS 解析的过程;获取数据后可能会对数据进行缓存。一、连接服务器优化策略1. 不用域名,用 IP 直连 省去 DNS 解析过程,DNS 全名 Domain Name System,解析意指根据域名得到其对应的 IP 地址。 如

2017-08-08 11:28:27 323

转载 Android 中的Dalvik和ART是什么,有啥区别?

什么是Dalvik?Dalvik是Google公司自己设计用于Android平台的虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多

2017-05-24 11:11:41 399

转载 java 线程池详解

原作者:海子   出处:http://www.cnblogs.com/dolphin0520/    本文归作者海子和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。       在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并

2017-05-22 15:22:16 324

原创 三种方式实现圆角图片

最近在学习自定义view的时候看见了几个方法,一个是clipxxx(),一个是setShader(),一时有点懵,学习了一下,感觉还是很简单的,和xfermode有异曲同工之妙,所以写了个demo,来看看最基本的方法 为了表现最基本的用法,不考虑图片的适配缩放,不考虑内存泄漏等情况,给最直观的用法clipxxx()实现圆角图片 private void drawRoundImageByPath()

2017-05-18 18:18:14 3588

转载 Canvas API详解(Part 2)剪切方法合集

在Android自定义View使用绘图的裁剪功能的时候,我们最好manifest中的 或者或者标签中添加如下属性android:hardwareAccelerated="false"因为裁剪功能是不支持硬件加速的.没有设置的话,有可能绘图裁剪的效果出不来;Android原生api裁剪方法中clipRect和clipPath方法中,有的不传递Region.Op参数,其

2017-05-17 20:35:05 354

原创 反驳有关博客关于PorterDuffXfermode的讲解

这个标题口气是真大,没办法,讲解这个的博客太多了,而且好多有误导性,有些自己都不知道为啥,还写博客,抄来抄去的。当然了,很多人写的还是很好的,但是感觉还是没有理解PorterDuffXfermode的用法以及为啥和官方demo的不一样的原因,所以写了该博客。 主要参考博客以及反驳博客是 http://blog.csdn.net/iispring/article/details/50472485

2017-05-11 14:35:14 516

转载 PorterDuffXferMode不正确的真正原因PorterDuffXferMode深入试验)

菜鸡wing遇敌PorterDuffXferMode,不料过于轻敌,应战吃力。随后与其大战三天三夜,三百余回合不分胜负。幸得 @咪咪控 相助,侥幸获胜。关键字:PorterDuffXferMode  错误 不正确  不达到预期  bug上一篇带来一个使用PorterDuffXferMode  做的 水波纹loadingview,中间遇到了点小困难。(

2017-05-10 16:24:20 388

转载 android canvas layer (图层)详解与进阶

1 概述前面的canvas变换文章中,已经粗略的讲解过saveLayer的知识,只是图层的概念没有详细的讲解。这里将详细讲解layer。在使用相关方法和flag的时候,先关闭硬件加速。如果需要开启,参照谷歌官方的硬件加速表格。硬件加速版本2 saveLayersaveLayer可以为canvas创建一个新的透明图层,在新的图层上绘制,并不会直接绘制到屏幕上,而会在resto

2017-05-10 14:51:57 1636

htmlunit-2.43.0-bin.zip

htmlunit 全部jar包,完整版,可以用在android平台,这个是完整版的,完整版

2020-09-06

空空如也

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

TA关注的人

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