自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 ViewPager2滑动事件冲突

1. 场景分析 RecyclerView或SwipeRefreshLayout中嵌套ViewPager2,ViewPager2左右滑动困难,事件容易给RecyclerView或SwipeRefreshLayout吃掉。 ViewPager2中嵌套SwipeRefreshLayout,Swi...

2020-05-11 12:09:09 1720 2

原创 Kotlin与Gson与Moshi

文章目录Kotlin与Gson与MoshiGson在Kotlin中的问题希望是什么样的Moshi Kotlin与Gson与Moshi Safe Parsing Kotlin Data-classes with Gson Gson在Kotlin中的问题 Kotlin的Data Classes和非...

2019-12-19 01:10:16 304 0

原创 集合的modCount字段和Fail-Fast,Fail-Safe机制解释

发现前面博客遗失了一篇ArrayList源码解析的文章,这里就不打算重写了,但是其中关于Fail-Fast机制的知识还是有必要记录一下。 Fail-Fast机制 集合类数据类型都有一个迭代器用于遍历集合,这样的设计是为了能使用共同的方式迭代集合,而不依赖于集合的类型的具体实现,比如无论哪种集合类型...

2019-06-18 06:08:31 150 0

原创 AndroidStudio 设置Gradle插件日志打印级别

AndroidStudio Build窗口默认只显示Error级别的日志 想看其他级别的日志,执行命令时需要带上参数,如./gradlew --debug assembleDebug。 可以通过设置AndroidStudio更方便的修改打印的日志级别:下面是显示info级别 ...

2019-03-18 18:23:30 958 0

原创 lifecycle-aware components(生命周期感知组件用法和原理)

Android and Architecture Android lifecycle-aware components codelab https://github.com/googlecodelabs/android-lifecycles savedInstanceState和 fragm...

2019-02-28 14:32:35 322 0

原创 小心Sqlite的autoincrement可能会让你产生误解

参考: https://www.sqlite.org/autoinc.html https://www.sqlite.org/lang_createtable.html#rowid 「译」sqlite为什么autoincrement不推荐使用2018/09/15 Sqlite官方:不推荐使用a...

2019-02-19 15:45:09 706 0

原创 Android调用系统相机和相册,解决图片方向问题,压缩图片

如果还需要裁剪、压缩等功能推荐使用bilibili开源的boxing。https://github.com/Bilibili/boxing 旋转图片的代码来源于此。 1. 图片方向问题 拍照或者从相册中选择图片后,我们都可以直接或间接的得到Uri或源文件。 通过imageView.setI...

2018-11-27 19:46:58 639 2

原创 properties乱码,Transparent native-to-ascii conversion

1. 遇到的问题 2. 乱码产生的原因 3. 配置编码 4. Transparent native-to-ascii conversion 5. 为以后的项目也采用这个编码设置 1. 遇到的问题 properties中配置的国际化资源引发的乱码问题 2. 乱码产生...

2018-08-29 06:55:23 8207 4

原创 HashMap实现原理和源码分析

《算法 第4版本》 3.4 散列表 知乎-R神:关于hashMap的一些按位与计算的问题? 知乎-美团:Java 8系列之重新认识HashMap 新浪博客-无敌宝贝:取余与位运算 1. 散列表(哈希表) 1.1 散列函数 hashCode() 1.2 除留余数法 ...

2018-05-13 21:06:54 6533 4

原创 符号引用和直接引用,解析和分派

知乎-RednaxelaFX——JVM里的符号引用如何存储? 【深入理解JVM】:解析与分派 1. 符号引用 2. 直接引用 3. 解析 4. 分派 4.1 静态分派 4.2 动态分派 5. 总结 5.1 符号引用 5.2 直接引用 5.3 解析 5.4 分派 ...

2018-04-27 11:53:25 1883 3

原创 【字符编码】你真的了解字符编码吗

腾讯大讲堂——字符编码的前世今生 字符串,那些你不知道的事 编码字符集标准及分类研究 通信用語の基礎知識 —— ISO/IEC 2022 ISO 2022 介紹(1): 標準 1. 说明 1.1 字符编码贡献的相关的组织 1.2 相关术语说明 2. 字...

2018-04-21 02:06:37 1014 0

原创 Serializable和Parcelable

Parcelable vs Serializable 性能对比 Android Parcel对象详解 Parcelable最强解析 1. Serializable原理 2. Parcelable原理 3. 总结 当我们使用Intent传递一个对象的时候,需要...

2018-04-21 02:05:14 187 0

原创 【闭包】你真的理解闭包和lambda表达式吗

1. 前言 2. 【译】lambda表达式和闭包的区别 3. 历史考据 4. 总结 1. 前言 在阅读Think in java时,关于内部类的作用中出现了闭包这个词。于是开始百度,了解到了怎么使用代码定义一个闭包,闭包能实现什么妙用。而这种答案是不能让人满意的,因为这样的...

2018-04-10 05:54:47 2094 3

原创 EditText的Gravity居右时,游标在hint左边的解决方案。

解决方案看这篇文章,原理是用一个TextView代替hint。解决EditText文字右对齐时光标出现在hint文字的左边的问题 因为项目中也遇到了这个问题,所以将这个方法写成了一个自定义控件方便使用。 /** * Created by AItsuki on 2018/3/13. * ...

2018-03-13 11:38:46 1245 0

原创 自定义属性中使用android原生属性

有时候我们使用自定义属性时,可能会遇到需要使用android已有属性的情况。 比如,大家有遇到过EditText设置右对齐gravity="right"的时候,如果存在hint,那么EditText游标的初始位置会在hint文字的左边的问题吗? 关于这个问题比较通用的一个解...

2018-03-12 21:13:08 717 0

原创 使用和获取Android的主题属性

参考文章: Android,如何在代码中获取attr属性的值 1. layout布局文件中使用主题属性 很多时候,我们想引用主题中的属性(attr)。例如 - colorBackGround:activity默认背景 - listChoiceBackgroundIndi...

2018-01-24 12:02:36 2037 3

原创 drawable和mipmap目录

1. 前言 11月分劳务派遣进了家大公司orz,开始一个新的项目。当我将一张切图分别放在drawable的各个dpi文件夹后,同事和我说不需要弄那么多份切图放在drawable中,没必要,而且会增大apk包的大小,放一份切图到mipmap-xhdpi中就够了。 我很好奇为什么,但是他并没有回答...

2018-01-12 06:28:01 1285 4

原创 Retrofit统一处理服务器返回参数

想了下还是写下这篇博客,去年遇到的一个坑。 关于这个服务器返回的请求状态,我以前用的是这种方式: 给 Android 开发者的 RxJava 详解 RxJava+Retrofit,在联网返回后如何先进行统一的判断?这种方式对服务器返回的Json格式有要求,必须是这种样子的:{ "...

2017-03-28 15:43:02 7755 6

原创 使用少量代码实现自己的RecyclerView侧滑菜单

没有找到自己想要的效果的侧滑菜单,花了些时间研究了一下能完成项目需求就行了。效果如下: 因为逻辑比较简单,总代码量500行左右,所以各种各样的定制都通过修改源码能实现,而且不需要继承特定的Adapter,使用方式和普通的RecyclerView没有区别。一. 实现一个侧滑菜单这里我使用DragH...

2016-10-28 16:00:36 4807 2

原创 Dagger2 最清晰的使用教程

部分内容参考自: [Android]使用Dagger 2依赖注入 - DI介绍(翻译) [Android]使用Dagger 2依赖注入 - API(翻译)为什么网上这么多dagger2教程,我还写了这篇文章。 找了很多Dagger2相关的博客,我看的脑浆炸裂…… Dagger2给我们带来了什么...

2016-09-20 18:29:17 1745 0

原创 聊聊Google官方MVP

MVP这个话题也是讨论了很久很久的,热度一直不减,甚至google官方也很认可MVP在Android中的地位。 而我最近一个项目也参照google的那个MVP架构,发现并怎么好用。果然架构这种东西需要自己思考,根据不同的项目进行变更,MVP MVC MVVM总的来说就是一个架构模式,具体应该怎...

2016-09-05 14:26:00 1841 2

原创 使用Dagger2前你必须了解的一些设计原则

可能很多人并不知道Dragger2是什么,有什么用,为什么这个开源库会这么的热门。 所以,在使用Dragger2之前,我们先要了解一些设计模式,看完之后想必你会喜欢上这个库。一、依赖倒置原则A. 高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。 B. 抽象不应该依赖于具体实现,具体...

2016-08-22 01:14:58 1116 0

原创 使用Okhttp/Retrofit持久化cookie的简便方式

首先cookie是什么就不多说了,还是不知道的话推荐看看这篇文章 Cookie/Session机制详解 深入解析Cookie技术为什么要持久化cookie也不多说了,你能看到这篇文章代表你有这个需求。cookie简单来说就是服务器在客户端中保存的键值对,比如说早期的购物车,保持登陆状态都是使用...

2016-08-16 00:35:36 9428 5

原创 Build gradle project info的暴力解决方式

之前是解决过这种问题的,但是昨天突然又遇到了,忘了解决方式,网上找了大半天没找到之前看的那篇文章…… 在github上下载的开源项目,在打开的时候总是会遇到这种问题。那是因为gradle网站被墙的原因,我们无法下载到gralde插件。有条件的话可以使用vpn全局代理,没有的话用下面这种方式也可以。...

2016-07-30 14:25:22 3229 0

原创 Android 怎么实现newbility的下拉刷新和加载更多的ListView

在上一篇博文的最后,我说要写一个下拉刷新的ListView和RecyclerView,并且可以直接使用QQheader 先说声对不起了,上一篇博文的那种设计绝对有问题,会出现很多重复代码!我的脸被自己打了,好疼 /(ㄒoㄒ)/~~ 上一篇博文:Android 怎么实现支持所有View的...

2016-07-04 17:39:35 2998 0

原创 Android 怎么实现支持所有View的通用的下拉刷新控件

转载请标明出处: 本文出自:【AItsuki的博客】 下拉刷新对于一个app来说是必不可少的一个功能,在早期大多数使用的是chrisbanes的PullToRefresh,或是修改自该框架的其他库。而到现在已经有了更多的选择,github上还是有很多体验不错的下拉刷新。而下拉刷新主要有两种...

2016-06-20 12:25:52 9580 5

转载 <转>为什么 Android 上 Canvas 画出的图形不够平滑?

原文链接 : Android: Why your Canvas shapes aren’t smooth 原文作者 : Ali Muzaffar 译文出自 : 掘金翻译计划 译者 : Sausure 校对者:zhangzhaoqi, lovexiaov 通过 Google 搜...

2016-06-12 21:49:55 4776 0

原创 Android热补丁动态修复技术(完结篇):自动生成打包带签名的补丁,重构项目

一、关于前面四篇博文 Android热补丁动态修复技术(一):从Dex分包原理到热补丁 Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题! Android热补丁动态修复技术(三)—— 使用Javassist注入字节码,完成热补丁框架雏形(可使用) A...

2016-05-05 12:41:53 5285 32

原创 Android热补丁动态修复技术(四):自动化生成补丁——解决混淆问题

一、前言在上一章中,我们使用javassist成功为项目注入了System.out.println(AntilazyLoad.class);这行代码,解决了class_ispreverified问题,可以正常使用了,但肯定还存在着很多未知的问题。 首先是javassist的问题 class中使用...

2016-04-21 18:01:02 5359 21

原创 Android热补丁动态修复技术(三)—— 使用Javassist注入字节码,完成热补丁框架雏形(可使用)

一、关于CSDN mardown编辑器的坑Android热补丁动态修复技术(三)这篇博文其实在4月8日的晚上已经发布了,然后紧接着写第四篇,但是我将(四)保存到草稿箱时,发现已经发布的(三)消失了,取而代之的是第四篇博文。在论坛问过版主,可能是因为我误操作导致的,第三篇博文已经无法恢复。 真是手...

2016-04-14 10:03:01 15137 59

原创 Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题!

一、前言上一篇博客中,我们通过介绍dex分包原理引出了Android的热补丁技术,而现在我们将解决两个问题。 1. 怎么将修复后的Bug类打包成dex 2. 怎么将外部的dex插入到ClassLoader中二、建立测试Demo2.1 目录结构2.2 源码activity_main.xml<...

2016-04-06 18:27:37 12318 15

原创 Android热补丁动态修复技术(一):从Dex分包原理到热补丁

一、参考 文章:安卓App热补丁动态修复技术介绍——by QQ空间终端开发团队 文章:Android dex分包方案——by 猫的午后 开源项目:https://github.com/jasonross/Nuwa 关于热补丁技术,QQ空间团队已经做了很详细的描述。但是细节上的东西都一带而过...

2016-04-06 16:53:39 8534 4

原创 Android实现滑动的几种方式演示

一、前言最近闲来无事,也不知道研究点什么比较好。就买了几本书,加强基础。这编博客是从徐宜生的Android群英传中总结而来的,非常好的一本书,推荐大家入手。我将用这几种方式,实现一个可拖动的View。二、 layout方式我们都知道View绘制流程的主要三个步骤,onMeaure测量 -onLay...

2016-03-04 17:34:26 3366 0

原创 Android,水波进度条

一、前言这个自定义控件并不是我写的,而是Github上的一个开源控件。 实现方式非常的巧妙,涉及到的知识也比较多点。现在我就来和大家分析一下实现原理。 https://github.com/gelitenight/WaveView这是我重写了一遍的,加深理解。 二、实现原理这里涉及到了 Sh...

2016-02-26 18:16:23 3505 1

原创 Android——Shader渲染器

一、前言本文参考自 ——http://www.cnblogs.com/tianzhijiexian/p/4298660.html 这里很多内容直接复制抄袭,算是转载吧,感谢原作者。二、shader的子类BitmapShader ComposeShader LinearGradient R...

2016-02-02 16:38:35 1363 0

原创 用DrawText实现高效的Android倒计时功能。

上一篇博客也说了要实现一个倒计时的自定义控件,这次就把写好的自定义控件给发出来。暂时用着还没有什么问题,功能还较弱,日后可能会继续强化,目前就这样了,觉得还不错的话可以自己修改。 一、成品预览 小时位数的切换和倒计时结束的回调。 可以设置字体大小,颜色,分隔符,分隔符两边的margin。...

2016-01-28 15:18:08 1218 0

原创 深入了解LayoutInflater

写在前面:看了很多博客之后,被大神这种分享精神给感染了。我也决定开始正式写博客了,前面也写过一两篇,不过发现自己描述能力实在有限,而且似懂非懂,就不好意思发出来,现在重新整理,以后会坚持写下去,希望大家多多支持。1. LayoutInflater源码分析  想要真正的了解View, 我们需要从xm...

2016-01-26 09:46:15 657 0

原创 Android,气泡动画

一、前言 本来想做一个类似window气泡屏保的动画效果。 奈何小球间的非对心碰撞公式没研究出来,对于我来说真的太复杂了,等公式给我研究差不多的时候,发现计算角度的问题也很复杂。博主表示高中的时候物理从未及格,而且这是大学物理的课程……然而我大学并没有学物理。 目前做出来的效果也很简单,只是...

2016-01-25 14:48:49 8078 10

原创 Android:SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式

一、前言急着解决问题的直接看博文的最后面吧,或者点这里跳转过去,正确的解决方式就在那。虽然SwipeRefreshLayout出来已经很久了,但是知道今天我才第一次使用。 然后发现两个问题: 1. SwipeRefreshLayout会吃掉ViewPager的滑动事件。 2. SwipeRe...

2016-01-21 10:30:09 17765 47

原创 Android:实现一个带动画轮播效果的公告条。

修改历史2016.01.20 如果多次setNoticeList,可能会出现重复。那是因为setNoticeList的时候没有移除掉runnable,动画重复了的问题。不过也就那几秒钟有问题,等时间过后会自动回复正常。现在已经修复, Demo也已经重新上传了一份。一、写在前面很简单的一个小控件,...

2016-01-20 13:37:26 4889 1

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