
android
ZCrainy
这个作者很懒,什么都没留下…
展开
-
详解Java中的自动装箱拆箱
详解Java中的自动装箱拆箱一段代码引发的问题最近在学习一本关于java虚拟机的书,其中有一段关于自动装箱陷阱的示例代码如下: public static void main(String[] args) { Integer a = 1; Integer b = 2; Integer c = 3; Integer d = 3; Integer e = 321; Integer f = 321;原创 2020-07-27 10:24:51 · 315 阅读 · 1 评论 -
带你手撸一个Retrofit
前言Retrofit是一个优秀的网络请求框架的封装,它本身不请求数据,网络请求的工作由OKhttp负责。现在比较流行的MVP框架通常是由Retrofit+Rxjava+MVP来构建的。任何一款优秀的框架,都有值得我们去学习的亮点。下面我们先看一下Retrofit的使用方法,然后写一个我们自己的Retrofit。Retrofit的使用定义接口 interface API { ...原创 2019-10-14 16:20:16 · 341 阅读 · 0 评论 -
Android apk优化之资源混淆7zip压缩
##目的启用资源文件res混淆及压缩的好处:增加破解难度,用无意义的字母替换掉资源文件目录及名称,如把res/drawable/wechat变为r/d/a。目前主流大厂的apk打开后,资源目录都是r文件夹,看不到真实的资源文件名,就是做了资源文件混淆。减小打包后的apk体积。##原理通过resource.arsc文件格式,混淆步骤为:解析arsc文件,主要为全局与资源名字符串池...原创 2019-10-12 11:03:58 · 1827 阅读 · 0 评论 -
Rxjava操作符之变换操作符
1,map()描述:对原始Observable发射的每一项数据应用一个你选择的函数,然后返回一个发射这些结果的Observable官方示意图:示例: Observable.just(1, 2, 3, 4, 5) .map(new Function<Integer, String>() { ...原创 2018-07-12 09:07:08 · 648 阅读 · 6 评论 -
Rxbinding使用案例及分析
前言当今天下,黄巾贼起,狼烟四顾……咳,不好意思剧本拿错了。当今天下,Rxjava异军突起,凭借其简洁明了过程可控的链式编成,和强大的操作符,深受广大开发者青睐,同时也出现很多Rx相关库,如Rxbinding、RxPermission等,还有常用的RxBus(这个不是库)。今天就来介绍一下Rxbinding的使用以及一些实用案例。简介RxBinding在Github上的介绍只有一句...原创 2018-07-23 16:55:11 · 995 阅读 · 0 评论 -
关于WebView无法返回上一页问题解析
一、问题描述之前项目中用到WebView,一般都是这么写的mWebView.setWebViewClient(new WebViewClient(){ public boolean shouldOverrideUrlLoading(WebView view, String url) { mWebView.loadUrl(url); return tr...原创 2018-07-06 17:57:29 · 4558 阅读 · 1 评论 -
Rxjava操作符之辅助操作
前言本文介绍辅助类操作符(基于Rxjava2)如下:dodelaydelaySubscriptionmaterialize/dematerializeobserveOnsubscribeOnserializetimeIntervaltimeouttimestamptoXXXusing1,do描述:注册一个动作作为原始Observable生命周期事件的...原创 2018-07-19 17:34:07 · 1361 阅读 · 0 评论 -
RxBus的使用及解析
前言相信项目中使用了Rxjava的你,一定会选择使用RxBus而不是EventBus作为数据总线工具。那么你真的了解RxBus吗?下面就跟着我一起来探个究竟吧 注:本文基于Rxjava2.0,还在使用Rxjava1.0的童鞋赶紧升级一波吧解析我们都知道,Rxjava基于观察者模式,上游发送数据,下游通过回调接收数据。我们试想一下,假如我们在A页面发送数据,并把产生的Obs...原创 2018-07-25 21:06:15 · 2788 阅读 · 4 评论 -
AndroidStudio常用快捷键
Android Studio常用快捷键工欲善其事,必先利其器 快捷键 说明 Ctrl+C 复制 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+Y 删除当前行 Ctrl+D 复制当前行到下方 Alt+Insert 快速代码生成 Ctrl+Z 撤销 Ctrl+Shift+Z 反撤销...原创 2018-08-03 17:00:06 · 306 阅读 · 0 评论 -
教你快速写一个EventBus框架
前言EventBus相信大多数人都用过,其具有方便灵活、解耦性强、体积小、简单易用等优点,虽然现在也有很多优秀的替代方案如RxBus、LiveDataBus等,但不可否认EventBus开创了消息总线时代,有很多优秀的思想可以供我们来借鉴学习。下面就让我们来撸一个超简单的EventBus,领略其实现方式的主要思想。实现思路先看一下GitHub中官方用法介绍:1.定义消息实体类public...原创 2019-10-11 12:44:41 · 436 阅读 · 0 评论 -
Rxjava操作符之过滤操作
前言:本文将介绍以下过滤类操作符(基于Rxjava2.0):filterofTypetaketakeLastfirstfirstOrErrorlastlastOrErrorskipskipLastelementAtelementAtOrErrordebouncethrottleWithTimeoutdistinctignoreElementssample...原创 2018-07-17 18:01:11 · 1168 阅读 · 0 评论 -
Rxjava操作符之创建操作符
Rxjava创建类操作符基本创建操作符:create()描述:创建一个最基本Observable对象示例:Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(ObservableEmitter...原创 2018-07-11 12:28:39 · 478 阅读 · 4 评论 -
Rxjava操作符之结合类操作符
前言本篇介绍结合类操作符,包括:concat、concatArray、concatDelayError、merge、mergeArray、mergeDelayError、zip、zipWith、combineLatest、combineLatestDelayError、join、joinGroup、startWith、startWithArray、switchOnNext1,concat(...原创 2018-07-16 17:51:15 · 563 阅读 · 0 评论 -
EditText输入金额格式
/** * 用来限制EditText输入金额格式 */public class EditInputMoneyFilter implements InputFilter { /** * 最大数字,我们取int型最大值 */ public static final int MAX_VALUE = 2147483647; /** * 小数点后的原创 2016-09-18 13:56:37 · 1650 阅读 · 1 评论 -
超简单仿QQ步数显示控件
本着写文即学习的态度,记录下自定义一款超简单仿QQ步数加载控件,话不多数先看图。一,特性:1,外圈大圆、进度圆和数字显示的颜色均可以自定义 2,设置最大值和当前值 3,设置加载持续时间二,实现:1,画外圈大圆 2,画内圈进度圆 3,画文字在第二步与第三步要根据设置的最大值和当前值动态持续更新进行绘画,这里我使用valueAnimation获取中间值。自定义属性 <declare-s原创 2017-06-20 14:38:39 · 583 阅读 · 0 评论 -
自定义逐格走旋转圆盘
前言最近在不断学习自定义控件,项目中有个旋转圆盘的需求,需要一个刻度一个刻度的走,网上没发现有符合要求的,遂自己实现一下,先看下效果(录完才发现没有触摸轨迹,,前面旋转的是手滑动的,大家懂哈~)需求 1,圆盘可控制顺时针与逆时针旋转,圆盘中间需要设置图片 2,旋转需要按一个刻度一个刻度的走,具有跳跃性 3,需要提供顺时针与逆时针旋转的方法,以及可以禁止与开启旋转实现 首先当然是继承Vie原创 2017-07-01 19:50:57 · 610 阅读 · 1 评论 -
关于Android事件传递与分发
最近在看事件分发方面的知识,主要看了郭神之前的文章Android事件分发机制完全解析,文章由浅入深讲解很细致清晰。里面有这样一句话 “Android中touch事件的传递,绝对是先传递到ViewGroup,再传递到View的” 看到这里就一直想要知道,touch事件是怎么传递到viewgroup的,搜了几篇文章也都没讲清楚。直到看到这篇Android FrameWork——Touch事件派发过程原创 2017-07-14 14:15:59 · 428 阅读 · 0 评论 -
Android调用本机地图APP
官方文档地址高德:http://lbs.amap.com/api/amap-mobile/guide/android/route 百度:http://lbsyun.baidu.com/index.php?title=uri/api/android 腾讯:http://lbs.qq.com/uri_v1/guide-route.html 谷歌:https://developers.google.原创 2017-11-03 13:28:55 · 2476 阅读 · 0 评论 -
Android绘图Canvas与Paint属性汇总
在我们写自定义控件画比较复杂的图形时,可能会经常出现忘记画布或画笔的某些属性和参数怎么写的情况(至少我是这样…),因此在查询资料后在这里总结一下,以便查阅。Canvas属性DrawPoint,绘制点canvas.drawPoint(x,y,paint);DrawLine,绘制直线canvas.drawLine(startX,startY,endX,endY,原创 2018-01-18 16:02:50 · 862 阅读 · 0 评论 -
Android5.0 MaterialDesign初体验
MaterialDesign设计理念越来越普及,一直都没来得及跟进学习,趁现在的空闲学习一下。共享元素如今各大APP都能见到共享元素的身影,不太清楚的小伙伴看下示例效果,这是两个activity页面 使用共享元素的必备条件: 1,主题需要Theme.AppCompat下的主题才能看到效果。 2,需要在Android5.0(LOLLIPOP)及以上系统下运行。如果项目支持的最低原创 2018-01-19 14:11:15 · 329 阅读 · 0 评论 -
Android开发模式学习之代理模式
一,概述代理模式是Android中比较常用的设计模式,不仅在系统源码中经常出现,平常使用的各大开源框架也时常见到它的身影。代理模式又叫委托模式,其实就是在使用者和被使用者之间,增加一个第三方,使用者不再直接与被使用者打交道,而是一切操作都交与这个第三方来实现。例如甲要租房,会找个中介,中介帮助甲去找房、看房和交租金,甲只要结果就行了。代理模式的组成:Abstract Subjec...原创 2018-03-14 15:58:36 · 391 阅读 · 0 评论 -
关于腾讯bugly热更新签名问题
一、问题1,很多人刚开始使用腾讯bugly的热更新时,可能会遇到在使用tinkerPatchRelease生成基准包时,生成的apk名称为app-release-unsigned.apk,这是没有经过签名的。而官方文档中是生成的app-release.apk2,在使用buildTinkerPatchRelease生成补丁时,生成失败,报错can't the get signConfig f...原创 2018-07-10 11:52:31 · 861 阅读 · 0 评论 -
限制EditText不能输入中文的监听器
/** * edittext输入监听,不允许输入中文 */public class NoChineseTextWatcher implements TextWatcher { final String reg = "[^[\u4E00-\u9FA5]]";//正则表达式,非中文 private boolean isNotMatch = false; private E原创 2016-12-13 14:08:43 · 688 阅读 · 1 评论