自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

SkyHand

脚踏实地,向着目标一步一步走。

原创 Libgdx实现和原生view进行层级透明叠加,修改GLSurfaceView为GLTextureview

一、简介使用Libgdx的都知道,Libgdx使用的是GLSurfaceView,GLSurfaceView从Android 1.5(API level 3)开始加入,作为SurfaceView的补充。它可以看做是SurfaceView的1种典型使用模式。在SurfaceView的基础上,它加入了EGL的管理,并自带了渲染线程。所以,GLSurfaceView还是和SurfaceView一样,...

2019-03-13 20:24:08 1612

原创 更新AndroidStudio3.3之后编译构建报错 Task 'wrapper' not found in project ':xxxxxxxx'

开始是有点懵逼的,全局搜索没有这个wrapper的task,百度谷歌也无果。试过删除gradle的环境变量,降低gradle版本,都不行。重新rebuild项目,报了一些包找不到。最终解决方法是: close项目,重新import,不是open,是import...

2019-01-16 17:37:45 6590 1

原创 libgdx音量逐渐停止,解决音量调节崩溃crash闪退

一、 音量逐渐停止在自己的项目做到后期之后,老板说了一个体验很不好的问题: bgm切换的时候,突然就停止,太突兀了,体验非常糟糕,能不能逐渐停止?当时,我就想拿起我柜子里面的阳江十八子40米西瓜刀,往老板身上砍。但是,理性告诉我,不能冲动,于是我就先找了一下libgdx里面有没有提供逐渐停止这样子的方法,于是打开了Music接口,发现就几个方法。。。。。这就脑瓜疼了在我百思不得其解的时候...

2018-10-29 12:03:11 290

原创 Cannot change attributes of configuration ‘:xxxxxx:kapt’ after it has been resolved

Cannot change attributes of configuration ‘:xxxxxx:kapt’ after it has been resolved when update Android Studio to 3.2.1之前项目禁止,一直没敢升级as,怕有坑,今天一升级,果然有坑,因为这次升级需要gradle也升级,每次gradle升级有些东西都修改了,所以一般gradle操作...

2018-10-25 14:51:40 1437

原创 Libgdx 解决部分Android机型锁屏崩溃crash

libgdx使用了全屏模式之后,在某些机型会出现崩溃的情况,两年前就存在了,一直到现在为止,官方都没进行修复,其崩溃原因就是在源码AndroidGraphics.java中的onPause可以看到这样子的一段代码:void pause () { synchronized (synch) { if (!running) return; ...

2018-09-17 10:40:17 440

原创 Kotlin data class 重写getter setter处理,支持Parcelable的intent传递和Gson解析

一、 前言Kotlin的data class是不支持直接get和set的,于是有些需要修改实体参数的需求就做不了。 在百度或谷歌搜索到的其他文章,有说是定义一个新的属性在内部,但是这样子并不适合我们在项目中使用。二、 例子价格的处理:服务器要求价格的单位是分,但是移动端显示和填写的时候需要单位为元,这个时候需要我们在实体类的进行分和元的转换处理。 一个商品实体类da...

2018-02-24 17:21:33 4685 4

原创 Android AOP之路四 编译时注解详细讲解

一、 简介在第一篇文章时候有说了,注解有三个功能:标记信息: 第二篇文章说了运行时候动态处理: 第三篇文章说了编译时候动态处理: 这篇文章说简单说明一下AOP和APT的关系:AOP是Aspect-oriented programming的缩写,叫做面向切面编程,例如OOP(面向对象),AOP只是一种思想的统称,实现这种思想的方法有挺多,例如面向对象的有java、c++、c#等。 AOP通过

2017-11-09 17:28:31 1930

原创 Android画板开发(五) 添加文本文字

一、前言添加文本,也是属于 一个比较简单的功能,在第二篇的时候,添加了橡皮擦,在橡皮擦里面通过一个模式的形式进行画笔的判断,当然文本也是如此,添加一个文本模式,在onTouchDown的时候,弹出PopupWindow,输入文本,然后PopupWindow消失的时候,利用staticLayout绘制到画布上即可。当然也有些需要注意的地方下面一步步来实现二、实现2.1 添加文本模式例如橡皮擦那样,添加

2017-11-02 09:34:30 2378 8

原创 Android画板开发(四) 添加背景和保存画板内容为图片

一、绘制背景绘制背景的方法有两种:自己利用canvas进行绘制利用view的自带方法进行绘制1.1 canvas绘制背景自己绘制的背景的方法就是在onDraw回调进行绘制的时候,先draw一个背景,再进行draw原来的内容 override fun onDraw(canvas: Canvas) { super.onDraw(canvas) //先绘制颜色作为

2017-11-01 09:59:29 4185 1

原创 Android画板开发(三) 撤销反撤销功能实现

一、分析这篇将会讲解撤销反撤销功能的实现,先讨论一下这个原理是怎么样实现的。每次撤回的内容,内容是怎么定义呢? 其实就是每一笔,每一笔作为撤回的内容,那每一笔怎么算呢,就是算手指从按下-移动-放开这一个过程就是一笔。我们只需记录这个过程为一笔,然后用一个已画列表list列表来记录这个过程的paint画笔和路径path。撤销的时候就把后面的一个数据移到另一个撤销列表反撤销的时候,就把撤销列表的最后面那

2017-10-31 21:52:12 3758

原创 Android画板开发(二) 橡皮擦实现

在上一篇实现了简单的画板功能, 这篇实现橡皮擦功能,首先分析一下应该如何实现,在Andriod有个图像混合(Xfermode)概念,利用这个概念我们就可以实现橡皮擦功能。一、XfermodePaint有一个方法setXfermode(Xfermode),这个方法设置图像的混合模式。参数有三个子类:AvoidXfermodePixelXorXfermodePorterDuffXfermode前

2017-10-31 10:53:37 5043 2

原创 Android画板开发(一) 基本画笔的实现

一、简介这是画板系列的第一篇,一步步开始,从简单的画板,到功能稍微齐全一点的画板,例如基本画笔、橡皮擦、背景、文字、撤销、反撤销、保存等这篇带大家实现一个最简单的画板,前提是需要对自定义View有一定的了解。用的是kotlin语言二、实现分析如何实现: 定义了画笔和Path,然后在触摸屏幕的时候,手指一边移动一边进行path的滑动,绘制。这就完成了一个最简单的画笔功能。下面几十行代码完成这个 cla

2017-10-31 10:31:43 3417 1

原创 Android内涵段子评论无限点赞分析与刷赞App[已和谐]

一、前言在看内涵段子的时候,总是发现一些广告,瞬间就到几千的赞,这引起了我的注意,于是开始了探索之路。首先是预判,为什么可以瞬间这么多,我猜的原因有以下1 、广告狗有几千个小号,轮流点赞2 、点赞有bug,同一个帐号可重复点赞3 、内部员工直接修改数据库就根据可能性来说,最大的可能排序为 2 > 1 > 3 ,第二个可能性是最大的。我们先来分析。二、分析2.1 开始抓包抓包是利用Fiddle

2017-10-25 18:13:07 5132 1

原创 微信Android SDK反编译还原源码 进行修改重新编译

一、介绍微信sdk,做开发的都应该用过,微信分享、支付,都要用到的。接下来,跟着我,把他的sdk源码还原为一个module可编译的形式。用到的工具:jadx: 这是一款反编译apk和jar包的工具,下载地址点我jeb: 这也是一款查看apk源码的工具,下载地址点我Android Studio二、过程2.1 下载微信Android sdk的jar包下载页面我用的方法是,gradle依赖,然后把

2017-10-08 20:09:40 5774 4

原创 Android防蹭网大师1.3.3.125绿色优化精简版By天平

防蹭网大师是一款类似wifi杀手的软件,可以禁止用一个局域网的人的网络,大家连同样的wifi,我可以让其他人上不了网,支持Android4.0 5.0 6.0 7.0。修改内容:去除引导页去除首页的新闻列表去除首页我的头条按钮去除检查更新,可永久使用去除自启动、敏感服务和权限去除通知栏的防蹭网大师正在运行的提示精简去除无用代码和图片和库,仅剩余2m多去除app整体广告(首屏、测速页、

2017-09-28 16:59:15 788

原创 [Android App] iPhoneX朋友圈小尾巴工具

一、 简介功能: 表面是一个iPhone的信息查看器,但是输入“天平”之后,即可开启隐藏页面,输入内容,点击开始装逼,即可发布IPhoneX尾巴的朋友圈内容。下载地址:

2017-09-22 10:59:46 1475 2

原创 Android跳转-ARouter详细使用教程

一、简介Android平台中对页面、服务提供路由功能(跳转)的一个库1.1 最新版本 模块 arouter-api arouter-compiler arouter-annotation 最新版本 1.2 实例图片1.3 功能介绍支持直接解析标准URL进行跳转,并自动注入参数到目标页面中支持多模块工程使用支持添加多个拦截器,自定义拦截顺序支持依赖注入,可单

2017-09-14 16:28:04 17124 3

原创 Android 自动获取输入短信验证码库AutoVerifyCode

一、简介Android的短信验证码自动输入库,内嵌自动申请权限,兼容性高,支持多项配置。短信验证码长度验证码类型(大写字母、小写字母、大小写字母、数字、数字字母)短信内容过滤发送者号码过滤短信权限回调,失败重新操作等等消息回调,可自行处理Github地址: https://github.com/tpnet/AutoVerifyCode二、使用2.1 最简单的使用适用在验证码为数字,而且

2017-07-24 10:44:16 4612 6

翻译 AndroidStudio3.0 Android Profiler分析器(cpu memory network 分析器)

Android Profiler分为三大模块: cpu、内存 、网络。基本的使用在上一篇文章有讲到。这里详细说一下。cpu分析器CPU ProfilerCPU分析器可帮助您实时检查应用程序的CPU使用情况和线程活动,并记录方法跟踪,以便您可以优化和调试应用程序的代码。要打开CPU Profiler,请按照下列步骤操作:点击 View > Tool Windows > Android Profile

2017-05-21 23:58:47 97623 21

原创 AndroidStudio3.0 下载使用新功能介绍

谷歌2017发布会更新了挺多内容的,而且也发布了AndroidStudio3.0预览版,一些功能先睹为快。(英语一般,有些翻译不太好)下载地址https://developer.android.google.cn/studio/archive.html选择显示全部即可看到下载地址,这里给出来了。Windows (64-bit): android-studio-ide-171.4010489-win

2017-05-21 18:34:38 59639 8

原创 Android在项目中接入腾讯TBS浏览器WebView的教程与注意的地方

腾讯TBS浏览器服务我们都知道,在Android开发中,经常会用到Webview,而且WebView是出了名的坑的,各种bug。这时候腾讯老哥站出来了,搞了一个TBS浏览器服务这个东西。 说得这么屌,其实就是一个webView控件,然后解析解析网页的内核是他自己做的,叫X5内核(系统原生的WebView用的是WebKit内核),所以我们开发者用的时候,主要就是用这个com.tencent.sm

2017-04-28 16:51:29 28257 6

原创 Retrofit+Rxjava+SqlBrite+SqlDelight实现多文件断点续传下载

介绍实现功能:多文件下载暂停,开始断点续传进度回调sqlite保存下载信息程序被杀了,重新打开继续断点下载。。。github: https://github.com/tpnet/RetrofitDownloadDemo , 有用可以点个start谢谢本文需要SqlDelight、SqlBrite、AutoValue的知识。使用的是Rxjava1.2.9版本。如何实现看看流程图:断点续

2017-04-24 16:28:53 3064 1

原创 Glide结合Okhttp做cookie管理实现注册需求的图片验证码短信验证码功能

简介有一种需求是这样子,在注册这个功能上,利用cookie进行标识当前手机,进行短信验证码的获取。 流程是这样的(有点坑,csdn好像用代码画不了下面这个图):这时候问题来了,我们需要获取Glide请求验证码的Cookie,这该怎么解决呢?方法1结合okhttp,Glide使用okhttp进行加载,然后okhttp进行cookie管理,发送请求获取短信验证码。1. 导包导入使得glide支持okht

2017-04-11 16:27:31 3604 4

原创 Android SqlDelight和SqlBrite无缝结合使用的Demo例子

Android SqlDelight详解和Demo例子: 点我 Android SqlBrite使用介绍和官方demo详解: 点我 Android AutoValue使用和扩展库: 点我在说到SqlBrite的时候有介绍到它的官方的例子,官方的栗子是没有用到SqlDelight的。这里我在这个例子的基础上添加SqlDelight,实现SqlBrite和SqlDelight的无缝连接。这里我偷个懒

2017-03-17 11:41:45 2344

原创 Android SqlBrite使用介绍和官方demo详解

一、什么是SqlBrite对 Android 系统的SQLiteOpenHelper和 ContentResolver 的轻量级封装,配合Rxjava使用。github地址: https://github.com/square/sqlbrite ps: 2017年3月15号为止,还不支持Rxjava2,有点遗憾。二、导包和初始化在module的builde.gradle依赖加入以下,如果你没导

2017-03-15 15:18:05 4994

原创 Android AutoValue使用和扩展库

一、什么是AutoValue意思就是自动值,谷歌出品,添加@AutoValue这样的注解 就能够自动生成代码,使得程序可能更短,更清晰。 支持Java1.6+github: https://github.com/google/auto/blob/master/value/userguide/index.md首先看一个bean类,User.java:public class User{ pr

2017-03-15 10:25:45 5896

原创 Android SqlDelight详解和Demo例子

一、简介SQLDelight 和 SqlBrite 是 Square 公司推出的一个 Android 平台数据库解决方案。在了解这个两个东西前,必须先得有Andorid的Sqlite的知识(SqliteDatabase and SqliteDataHelper),还有AutoValue。要分清他们两个的功能: - SqlDelight是用来把Sql语句生成Java对象的 - SqlBrite

2017-03-14 19:46:26 3966 1

原创 Android Notification不显示浮动通知,不显示锁屏通知

问题不显示浮动通知,不显示锁屏通知。解决1. 首先手机得先开启权限应用详情 -> 自定义通知 -> 开启对应的权限2. 设置Notification的flagNotification的flag有5个。FLAG_AUTO_CANCEL 当通知被用户点击之后会自动被清除(cancel)FLAG_INSISTENT 在用户响应之前会一直重复提醒音和震动,(如果在default那里开启的话)。FL

2017-03-10 17:10:14 14890 2

原创 Android快速依赖注入框架Dagger2使用2

接着上一篇: http://blog.csdn.net/niubitianping/article/details/60878104一、单例@Singleton需要实例的类如果是单例的,需要在Component接口和Module类的方法使用@Singleton。栗子: 新建一个SingleClass.javapublic class SingleClass { //内容可以为空,仅做测试}

2017-03-10 10:41:10 1089 2

原创 Android快速依赖注入框架Dagger2使用1

一、啥是Dagger2前面的概念可能开始看不懂,给点耐心,看到例子就懂了。 本篇文章需要注解方面的知识,不了解的可以先看:http://blog.csdn.net/niubitianping/article/details/601451281.1 简介Dagger2是一个Android/Java平台上快速依赖注入框架,由谷歌开发,最早的版本Dagger1 由Square公司开发。依赖注入框架主要用于

2017-03-08 18:22:30 5061 2

原创 Android AOP之路二 Android上的注解

一、简介啥是注解,不懂的可以先看我上一篇文章。在android 里面 注解主要用来干这么几件事:和编译器一起给你一些提示警告信息。配合一些ide 可以更加方便快捷 安全有效的编写java代码。谷歌出的support-annotations这个库 就是主要干这个的。和反射一起 提供一些类似于spring 可配置的功能,方便简洁。二、Support Annotations栗子这里使用官方的一个库

2017-03-06 13:58:59 2456

原创 AndroidAOP之路三 注解处理解释器IOC

一、提取Annotation信息当开发者使用了Annotation修饰了类、方法、Field等成员之后,这些Annotation不会自己生效,必须由开发者提供相应的代码来提取并处理Annotation信息。这些处理提取和处理Annotation的代码统称为APT(Annotation Processing Tool)。JDK主要提供了两个类,来完成Annotation的提取:java.lang.a

2017-03-04 18:37:23 1150

原创 AndroidAOP之路一 注解Annotation

Android AOP 等在Android上应用越来越广泛,例如框架ButterKnife,Dagger2,EventBus3等等,这里我自己总结了一个学习路程。 - Java的注解Annotation - 注解处理解析器APT(Annotation Processing Tool) - Android上的注解 - 。。。。一、啥是注解从JDK5开始,Java增加了Annotation(注解

2017-03-03 19:08:12 1346

原创 [Android开发] RxJava2之路十三-阻塞操作例子Demo

一、阻塞操作符列表BlockingObservable已经在Rxjava2中去掉了,集成到了Observable中。官方说明不同文档: https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-2.0 可以看这里: http://reactivex.io/RxJava/2.x/javadoc/io/reactivex/Observa

2017-03-03 17:50:29 6839 1

原创 [Android开发] RxJava2之路十二- 异步和连接操作符例子Demo

一、操作符列表1.1 异步操作符异步操作符属于单独的rxjava-async模块,它们用于将同步对象转换为Observable。不支持Rxjava2.0,如果使用Rxjava1.0的话,可以导入下面的包就可以使用异步操作符了。compile 'io.reactivex:rxjava-async-util:0.21.0' 名称 解析 start() 创建一个Observable,它发射一

2017-03-03 17:34:52 2337

原创 [Android开发] RxJava2之路十一- 算术和聚合操作符例子Demo

一、算术和聚合操作符列表1.1 算术操作符RXjava-math:这个模块需要导下面这个包,不支持Rxjava2,所以Rxjava2用不了噢: compile 'io.reactivex:rxjava-math:1.0.0' 名称 解析 averageInteger() 求序列平均数并发射 averageLong() 求序列平均数并发射 averageFloat()

2017-03-03 16:08:05 2170

原创 [Android开发] RxJava2之路十 - 布尔操作符例子Demo

一、布尔操作符列表对原始数据发射源进行布尔操作,经过布尔操作之后,接收者就是观察者接收到的数据是布尔值。 名称 解析 all() 判断是否所有的数据项都满足某个条件 contains() 判断Observable是否会发射一个指定的值 isEmpty() 判断Observable是否发射了一个值 sequenceEqual() 判断两个Observables发射

2017-03-03 10:56:53 933

原创 [Android开发] RxJava2之路九 - 条件操作符例子Demo

一、条件操作符列表根据条件发射或变换Observables 名称 解析 amb() 给定多个Observable,只让第一个发射数据的Observable发射全部数据 defaultIfEmpty() 发射来自原始Observable的数据,如果原始Observable没有发射数据,就发射一个默认数据 switchIfEmpty() 如果原始Observable没有发射

2017-03-02 18:14:41 2858

原创 [Android开发] RxJava2之路八 - 辅助操作符例子Demo

一、辅助操作符列表用于处理Observable的操作符,例如延迟、定时等。 名称 解析 materialize() 将Observable转换成一个通知列表 dematerialize() 将上面的结果逆转回一个Observable timestamp() 给Observable发射的每个数据项添加一个时间戳 serialize() 强制Observable按次

2017-03-02 13:42:42 5240 2

原创 [Android开发] RxJava2之路七 - 错误处理操作符例子Demo

一、错误处理操作符列表用于对Observable发射的 onError 通知做出响应或者从错误中恢复,例如,你 可以:吞掉这个错误,切换到一个备用的Observable继续发射数据吞掉这个错误然后发射默认值吞掉这个错误并立即尝试重启这个Observable吞掉这个错误,在一些回退间隔后重启这个Observable 名称 解析 onErrorResumeNext() 指示Obs

2017-02-21 16:41:21 8842 6

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