自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhiChao的博客

交流请加QQ:279825695,注明CSDN

  • 博客(47)
  • 收藏
  • 关注

原创 PCM音频文件播放-PC软件推荐+android代码

PCM音频文件播放PC工具推荐Audacity音频处理 PC端可以播放PCM的软件,亲测可用,并且作者很贴心了附上了可下载的FFMPEG库,按照步骤导入即可。但是我发现一个问题,我这边的PCM播放的时候,速率不对,我需要按照0.5X速播放才是正常,其他的一切正常,还能看到波形图。android代码Android pcm文件播放方法(AudioTrack)别的作者的,亲测可用。播放正常。下面是我本地的方法:public static void PlayPCM(String path) {

2022-02-23 18:46:05 4133

原创 HorizontalScrollView强制停止

在scrollView的Fling阶段要在某个事件触发时停止Fling操作,本着百度第一的原则,我按照我的标题搜了半天竟然没有搜到,不禁很奇怪,是我搜索的姿势不对吗?总之,没有搜到就只能自己解决了,发现一个简单的方法,分享一下。看源码,在UP事件触发Fling,然后就没啦,很简单的方法。那我就给你传个0就好了啊。scrollView.fling(0);测试一下,问题解决。...

2019-06-04 18:10:04 659

原创 AudioRecord初始化失败?权限申请了没提示?

这是一个我犯了的傻逼问题,必须记录一下。E/AudioRecord: AudioFlinger could not create record track, status: -1E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.E/androi...

2019-01-22 15:40:24 8257 3

原创 java1.7的 -- 在Java中如何优雅地判空(并未完全解决,共同思考)

在Java中如何优雅地判空之前看这个文章的时候,并没有被NR Null Object这个插件吸引,相比繁琐的判空,这个并没有减少工作量,反而增加学习成本。倒是后面Optional这个方法很是吸引我,但是可惜的是它只支持java8,那么我们怎么在java7中实现这个呢?先贴一下Optional的使用。//有个类叫testBean,它里面有个类叫小明,小明喜欢的玩具default值是小刀。...

2019-01-15 19:17:01 913 1

原创 android studio 代码插件常用code整理

Android Studio自定义模板 写页面竟然可以如此轻松主要是参考鸿洋的这篇文章,还有就是studio自带的那几个activity和fragment。这里主要是整理一下在这个过程中主要用到的一些自定义的东西。java代码package ${packageName}; //包引入 <#if applicationPackage??>import ${applic...

2019-01-02 17:41:08 1192

原创 ButterKnife源码之--为什么我写的ButterKnife中OnClick注解有问题

事情的经过是这样的:我们知道ButterKnife的初始化时这样的ButterKnife.bind(this);,那我也希望自己封装的框架也是这个样子的,所以我打算这样Bind_MusicCutActivity.bindView(this);看上去没什么不一样,并且对findViewById的支持也没什么问题,问题出在哪了呢?出在我上一篇写OnClick的时候。//我对findOnGrante...

2018-12-05 10:40:54 685

原创 为什么ButterKnife不支持带参的OnClick -- 注解支持的类型

看ButterKnife源码public @interface OnClick { /** View IDs to which the method will be bound. */ @IdRes int[] value() default { View.NO_ID };}在实际的使用中呢,也很方便,直接在方法上加上注解就可以,但是我们发现它的注解方法只支持不带参的方法,或者参数...

2018-12-04 20:35:45 452

原创 AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 代码篇之:AMS

import org.objectweb.asm.AnnotationVisitor;import org.objectweb.asm.ClassVisitor;import org.objectweb.asm.MethodVisitor;import org.objectweb.asm.Opcodes;import org.objectweb.asm.commons.AdviceAdap...

2018-11-21 18:08:10 1615

原创 AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 代码篇之:Transform

总结一下:基本都是制式的代码,包括遍历那一块等等,其他方法需要的类型和返回值也都在注释里了。import com.android.build.api.transform.*import com.android.build.gradle.AppExtensionimport com.android.build.gradle.internal.pipeline.TransformManager...

2018-11-21 18:04:28 885

原创 Android shrinkResources使用中的问题

1、下面的写法是错的,编译不过去。因为这两个是搭配使用的,要么都是true,要么都是falseminifyEnabled falseshrinkResources true2、没有引用的文件但是需要保留怎么办?新增res/raw/keep.xml文件,在里面把需要保留的资源文件列举出来<?xml version="1.0" encoding="utf-8"?><...

2018-11-20 15:28:24 843

原创 AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 插件篇之:文件名和插件名你真的懂了吗

当我们写博客总结的时候,通常是我们已经验证或者解决了问题,那么我们写的文章往往是给已经解决完问题的自己看的,当一个人进入陌生领域的时候来看你写的文章,很可能是看不懂的,因为他没有你的经验,所以当你写文章的时候,往往要把自己放到初学者的位置,才能写出大家都能看懂的文章。当我去看别人写的插件的时候,我很诧异,因为往往他们的文件名都是从开始到结尾都是同一个,那么这些有什么区别呢?这个需要我们自己去验...

2018-11-09 18:22:32 336

原创 AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 引入篇

在写代码之前,外面首先要搞清楚各个类的引入(依赖),把这个搞清楚了,那么你在后续的开发中就不用操心当你新建一个类的时候的导包问题了,尤其是这个类很多包都有的时候,咬牙切齿!说实话这个很折磨人,尤其是公司的网不好的时候,那时你会怀疑:究竟是我引入的姿势不对,还是破网有问题。本文的引入都是我实际操作中遇到的,如果我说的不对,那么一定是studio的问题。Transform的引入首先看一下路径...

2018-11-09 17:54:24 491

原创 android studio完全清除代理之 我们不一样

之前studio设置过代理,但是当我取消代理的时候遇到了问题!我们先看下主流的设置方法:setting里清除代理gradle.properties里清除配置。当时我们不一样:我的项目里的gradle.properties里没有配置信息。然后你build的时候走的还是依赖,那肯定是依赖还没清理掉啊。一筹莫展的时候去gradle的文件夹下看到了这个东西:打开发现配置在这里。。。但是:我...

2018-11-09 16:41:01 2491 3

原创 AOP+ASM+插件化总结--实现基于注解的埋点和统计-- 理论篇

老规矩本人整理脑图,脑图的作用是把不连续的记忆通过图像联系起来,博文的作用是图像表述不清的通过文字记录下来并且记录自己遇到的问题和解决方案。如果本人表述不清,请参考一下文章,自行脑补更正。参考文献:http://kvh.io/cn/embrace-android-studio-gradle-plugin.html 拥抱 Android Studio 之五:Gradle 插件开发https...

2018-11-07 16:54:32 984

原创 注解(反射+APT)整理(附带脑图)

本人整理脑图注解扫盲和自定义注解带你从头到尾玩转注解这两篇是我之前学习的时候看的博客,作者整理的很详细了。我为了加深印象,自己又整理了个脑图,喜欢看图的可以看看本人整理脑图,个人喜欢看图说话,更直观一点。编译时注解和运行时注解的区别在现在市面上大多数的注解举例的时候,都是参照ButterKnife,然后告诉你怎么通过注解实现setContentView和FindViewByID。使...

2018-11-06 11:31:52 410

原创 组件化中遇到的问题

android组件化方案整理之前整理过组件化的知识点以后,就开始弄公司的项目了。这里把暂时遇到的几个问题整理一下。AAR的引入问题情景: 把aar放到commentLibrary里面,在其他project或者library中调用其中的方法,就避免了重复复制的问题。在commentLibrary里配置好以后,你所有引入这个library中都再需要配置一下:在android节点内:rep...

2018-11-02 19:56:44 594

原创 android组件化方案整理

自己整理的脑图,有新东西还会继续添加:http://naotu.baidu.com/file/3136bf76d6b1b91f90a2b91638d07b1b?token=cd9b0e1e55232352参考:猫眼电影的组件化之路:https://blog.csdn.net/qq_22744433/article/details/77948442微信Android模块化架构重构实践:htt...

2018-10-31 16:53:25 1927

转载 android stuidio 右击 show in explorer 失效 没反应

解决方法:需要在windows系统环境变量path中添加以下内容C:\Windows%SystemRoot%%SystemRoot%\system32关闭AS,重新启动就可以了!

2018-10-18 10:45:05 1045

转载 Android中allowBackup属性的含义和危险性实例讲解

一、前言今天在开发的过程中遇到一个问题,就是关于AndroidManifest.xml中的allowBackup属性,也算是自己之前对这个属性的不了解,加上IDE的自动生成代码,没太注意这个属性,但是没想到这个属性会直接导致隐私数据的丢失。下面就来看一下这个属性的影响到底有多大。他的作用是什么?二、Android中的allo...

2018-10-15 15:18:33 218

原创 定制开源库之jar包和.so的引用

定制开源库很多时候只是代码的开源,这次的要求是把jar包和.so文件都放到库里,中间的过程还是有点曲折的。首先我找到的是:优雅的发布Android开源库(论JitPack的优越性)本来我是按照这个的顺序来的,但是在第三步的时候就卡住了:第 3 步: 给你的项目添加配置(重点)但是 apply plugin: 'com.github.dcendents.android-maven' ...

2018-10-12 11:01:16 373

原创 recycleview的滑动,scrollToPosition、scrollTo、scrollBy、smoothScrollToPosition、smoothScrollBy

今天做东西,要达到的效果是:recycleview设置的是GONE,我需要在它显示的时候能滑动到指定位置。 在网上查了很多东西,基本讲解的都是怎么滑动到列表不显示的item,或者是滑动到指定的位置。 我这里,主要是验证,从GONE到VISABLE的过程中,如何滑动到我们想要的位置。scrollToPosition这个方法是好用的,并且会触发onScrolled方法一次。然后我们可以处理...

2018-05-16 20:37:34 9883 1

原创 List的addAll和=等号的区别之纠错

这个文章的内容是错的——–List.addAll() 与=的区别 看了这个文章以后我是相信的,但是想了想实际的使用好像不是这样。因为我是android开发,如果addAll是这个效果的话,那还要static关键字干嘛?另外如果效果是这样的话,那我项目中应该出问题了啊。。。想想就好害怕 亲自验证了一下,发现不是这样的,不知道是java的改版还是什么。 但让不能说之前的作者是错的,因为人家实际给...

2018-05-10 17:56:56 1555

原创 仿抖音--音乐裁剪控件,android实现IOS版本效果

看了一下抖音的音乐裁剪(IOS),看上去很不错,所以决定实现一下。一路上写了三四个版本,遇到了很多问题,在这里分享一下。首先看下效果: 在说明怎么实现之前,我先分享下我在做的过程中的思路。第一版 :一屏效果看到这个动画效果,第一反应就是属性动画,根据宽度动态绘制。那么这种动态效果怎么实现呢:刚开始想通过setXfermode来实现,后来发现颜色不太对,因为你的背景色是有透明度的,...

2018-05-09 17:23:38 5268 3

转载 [转载]一大波 Android 刘海屏来袭,全网最全适配技巧!

[原文地址](https://www.jianshu.com/p/5008b707bd04) 一、序Hi,大家好,我是承香墨影!Apple 一直在引领设计的潮流,自从 iPhone X 发布之后,”刘海屏” 就一直存在争议。不过不管你怎样,Android 也要跻入 “刘海屏” 的行列,尤其是 Android P 发布之后,也从系统级...

2018-04-13 09:44:04 490

转载 [转载]突破Android P(Preview 1)对调用隐藏API限制的方法--来自奇卓社

一.概要 本文基于对AndroidP(Preview 1)的源码分析,实现了三种绕过对调用隐藏API限制的方法,有效性均已得到验证,能够成功调用系统隐藏API。二.限制原理 首先抛开Android P的具体实现过程,安卓系统要实现限制用户代码调用系统隐藏API,至少要做以下两个区分: 1.必须区分一个Method(或Field)对用户代码是隐藏的还是公...

2018-04-12 19:25:24 1535

转载 Android应用图标微技巧,8.0系统中应用图标的适配

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/79417483 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新。大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个G...

2018-04-12 09:34:58 253

原创 从mediapicker源码分析到系统URI查询

公司的DEMO用到了mediapicker第三方库,因为之前做的时候都是调用系统本身的,没有深入关注。所以这次点进去看看源码。github地址首先介绍一下它的使用,很简单: 先把他们的项目下载到本地,然后引入到你的项目里就可以了。 具体使用代码: MediaOptions.Builder builder = new MediaOptions.Builder(); MediaOptions

2018-04-10 17:48:30 322

转载 对标小程序 ? "快应用"开发入门指南 [ 转载 ]

日常刷掘金,看到了鸿洋大神的文章,这里转一下。 对标小程序 ? “快应用”开发入门指南 PS:前端灭我android之心不死啊(•́へ•́╬)一、快应用的出现 3月20日,中国通信院等协会联合包括小米、华为、OPPO等手机厂商,共同在北京正式发布名为「快应用」的新型应用形态协议。 本来没怎么关注,不过就在今天,意外在小米、华为在看到了快应用的身影。当看到饿了么的快应用的时候,才为之震惊,体

2018-03-23 10:41:23 182

原创 如何提高加密业务的性能

对加密不懂的可以点这里:也许,这样理解HTTPS更容易 后面会附上RSA加密解密方法代码。常用的加密一般有: 对称加密:AES、DES等 非对称加密:RSA 首先说一下业务需求,要把Crash信息进行本地保存,并且上报到后台服务端 这里贴出的是RSA加密解密的方法。如果对加密、解密的过程没有太高要求的话,RSA基本就够用了,用公钥加密,在服务端用私钥解密就行。 那么如果我们想进...

2018-03-22 14:24:44 872

转载 也许,这样理解HTTPS更容易[转载]

http://showme.codes/2017-02-20/understand-https/ 前几天从鸿洋的公众号看的推荐,现在加密这快很火,因为区块链也跟加密有关系,之所以现在把它提出来,是因为在做Crash捕捉问题的时候,还是要把Crash进行加密再进行本地保存和网络上传的,因为Crash信息了包含了APP的包信息还有用户信息等。...

2018-03-22 11:31:56 236

转载 用MediaPlayer+TextureView封装一个完美实现全屏、小窗口的视频播放器

转自用MediaPlayer+TextureView封装一个完美实现全屏、小窗口的视频播放器 GitHub为什么使用TextureView在Android总播放视频可以直接使用VideoView,VideoView是通过继承自SurfaceView来实现的。SurfaceView的大概原理就是在现有View的位置上创建一个新的Window,内容的显示和渲染都在新的Window中。这使得S...

2018-03-12 18:16:02 1177

原创 Monkey测试

上篇文章说到了Monkey测试,这里补充一下。参考Monkey压力测试,详解是什么Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕、滑动Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常。 为什么叫Monkey? 因为它模拟操作的时候就像猴子一样,来回乱点,这也是上篇文章的来历了,但是正因为这样才能发...

2018-02-22 15:46:54 442

原创 LeakCanary使用以及相关信息的保存

官方文档地址 LeakCanary 中文使用说明 这个是2015年的翻译,版本比较旧,但是大体的东西还是可以用的,建议跟官方文档比较着看,避免出错。 本文主要讲述在项目中用到的自定义Leak的东西。 事情的经过是这样的:为了自测,在平时会跑一下Monkey测试,为了检测内存泄漏,就使用了Leak,但是Monkey有时候会手贱的把Leak信息给删除了,造成通知栏有多条泄漏信息,但是具体内容无法查

2018-02-22 11:04:10 1701

原创 基于OKhttp的MVP封装

高级MVP架构封装演变全过程这篇文章是基于Retrofit 的,写的很好,感兴趣的可以看一下。本文基于上文的思想,做了OKhttp的实现,并指出其中的差异和问题解决。这里只给出最简单的MVP实现,为了不重复造轮子,请大家参考给出的上文,自行封装。本文接口采用豆瓣公开接口https://api.douban.com/v2/book/search?q=水浒传&tag=&start=0&count=1

2017-12-21 20:30:31 489

原创 OKhttp3对HTTPS的解析

http://blog.csdn.net/lmj623565791/article/details/48129405 鸿洋大神的这个文章说的很明白,但是随着OKhttp的改版,有的方法已经不存在了。 比如说:mOkHttpClient.setSslSocketFactory(sslContext.getSocketFactory());这个方法,已经没有了。 但是只要OKhttp依然支持HTT

2017-12-21 17:23:50 2719

原创 自定义走势图

自定义view就像应用题:看着很长,其实很简单,因为越长的题目就给你越多的信息。 首先看一下效果 可以自定义显示数目的多少和总数目。效果很简单,主要是一起复习一下自定义View的一些东西 首先是自定义我们的属性,默认是一屛六个,一共十个格子 在res-values-attrs文件夹里,name就是你的自定义view的名字,part是一屛的格子的个数,total是总个数<declare-s

2017-12-15 15:47:41 423

原创 Layout inspector界面在studio3.0的位置

之前在Android Studio 3.0之前,我们想打开Layout inspector界面,在Logcat界面就能直接打开, 然而在3.0之后,这个界面在那里就找不到了。 现在的位置是:

2017-12-15 14:46:21 4032 4

原创 从IntentService到HandlerThread再到Looper、Handler、Message

事情的起因是被人问到IntentService的东西,之前没有接触过,就查了一下,发现源码比较简单也很有意思,就延伸了一下。 参考: http://blog.csdn.net/lmj623565791/article/details/38377229 鸿洋大神的博客首先说一下IntentService和Service的区别:Service本身不支持耗时操作IntentService支持耗时操作

2017-12-08 16:22:12 189

原创 Bitmap的复制和注意

Bitmap是不能通过“ A = B ”来传递的,这样只是把B的引用给了A而已 之前做截图的时候就遇到过这个问题,但是没注意,想把截图获得的bitmap给ImageView显示,然后回收。发现报错后,就用“ = ”的方法新建了个A,同时回收B。发现还是报错,然后才想起来这个知识点。那么通过什么方法能够把Bitmap给复制过去呢? ps:这里也说一下,不要把Bitmap像我上面那样给ImageVi

2017-11-30 16:05:41 14793

原创 状态栏使用详解

在SDK21以后,系统为我们提供了修改状态栏的方法,有时候我们需要类似全屏状态,但是还要显示状态栏,这时候我们需要把状态栏背景颜色设置为全屏;有时候我们需要状态栏颜色与activity上边title颜色保持一致,如果状态栏是白色的,我们还需要修改状态栏中图标的颜色。 首先做一个判断 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLI

2017-11-29 17:53:01 427

空空如也

空空如也

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

TA关注的人

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