自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (10)
  • 论坛 (3)
  • 收藏
  • 关注

原创 ViewPager2滑动事件冲突

1. 场景分析RecyclerView或SwipeRefreshLayout中嵌套ViewPager2,ViewPager2左右滑动困难,事件容易给RecyclerView或SwipeRefreshLayout吃掉。ViewPager2中嵌套SwipeRefreshLayout,SwipeRefreshLayout和RecyclerView上下滑动困难。解决方案分是干预事件分发,判断手势是左右或上下滑动。2. 代码实现<!--values/attrs.xml-->

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

原创 Kotlin与Gson与Moshi

文章目录Kotlin与Gson与MoshiGson在Kotlin中的问题希望是什么样的MoshiKotlin与Gson与MoshiSafe Parsing Kotlin Data-classes with GsonGson在Kotlin中的问题Kotlin的Data Classes和非空类型很好用,Gson解析库也很好用,但是当他们两个结合起来时就非常的糟糕……假设服务器某个api会...

2019-12-19 01:10:16 405

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

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

2019-06-18 06:08:31 187

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

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

2019-03-18 18:23:30 1218

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

Android and ArchitectureAndroid lifecycle-aware components codelabhttps://github.com/googlecodelabs/android-lifecyclessavedInstanceState和 fragment.setRetainInstance以及 viewmodel的区别Demo使用方式:文章配合D...

2019-02-28 14:32:35 421

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

参考:https://www.sqlite.org/autoinc.htmlhttps://www.sqlite.org/lang_createtable.html#rowid「译」sqlite为什么autoincrement不推荐使用2018/09/15Sqlite官方:不推荐使用autoincrement很多开发者在数据库建表时,都会自然而然的将主键声明为autoincremen...

2019-02-19 15:45:09 914

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

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

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

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

1. 遇到的问题2. 乱码产生的原因3. 配置编码4. Transparent native-to-ascii conversion5. 为以后的项目也采用这个编码设置1. 遇到的问题properties中配置的国际化资源引发的乱码问题 2. 乱码产生的原因默认情况下,项目中的配置文件编码跟随系统。如下图,==配置文件跟随系统为GBK编码,而J...

2018-08-29 06:55:23 9295 5

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

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

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

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

知乎-RednaxelaFX——JVM里的符号引用如何存储? 【深入理解JVM】:解析与分派1. 符号引用2. 直接引用3. 解析4. 分派4.1 静态分派4.2 动态分派5. 总结5.1 符号引用5.2 直接引用5.3 解析5.4 分派1. 符号引用 这部分内容来自知乎RednaxelaFX大神的回答考虑这样一个Ja...

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

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

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

2018-04-21 02:06:37 1127

原创 Serializable和Parcelable

Parcelable vs Serializable 性能对比 Android Parcel对象详解 Parcelable最强解析1. Serializable原理2. Parcelable原理3. 总结当我们使用Intent传递一个对象的时候,需要实现序列化接口或者实现Parcelable接口。 用法很容易找到资料,这里不再赘述,推荐看这篇文章:...

2018-04-21 02:05:14 207

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

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

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

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

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

2018-03-13 11:38:46 1311

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

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

2018-03-12 21:13:08 819

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

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

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

原创 drawable和mipmap目录

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

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

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

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

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

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

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

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

原创 Dagger2 最清晰的使用教程

部分内容参考自: [Android]使用Dagger 2依赖注入 - DI介绍(翻译) [Android]使用Dagger 2依赖注入 - API(翻译)为什么网上这么多dagger2教程,我还写了这篇文章。找了很多Dagger2相关的博客,我看的脑浆炸裂……Dagger2给我们带来了什么,大多数博文也没有说明手动写写,加深印象,骗骗粉丝 (手动滑稽)部分Dagger2的运作机制是我个

2016-09-20 18:29:17 1906

原创 聊聊Google官方MVP

MVP这个话题也是讨论了很久很久的,热度一直不减,甚至google官方也很认可MVP在Android中的地位。 而我最近一个项目也参照google的那个MVP架构,发现并怎么好用。果然架构这种东西需要自己思考,根据不同的项目进行变更,MVP MVC MVVM总的来说就是一个架构模式,具体应该怎么实现还是需要依赖于自己不断的探索,照搬别人的项目的话是不可能适合你的项目的。所以网上的MVP项目也是五

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

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

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

2016-08-22 01:14:58 1139

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

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

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

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

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

2016-07-30 14:25:22 3360

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

在上一篇博文的最后,我说要写一个下拉刷新的ListView和RecyclerView,并且可以直接使用QQheader 先说声对不起了,上一篇博文的那种设计绝对有问题,会出现很多重复代码!我的脸被自己打了,好疼 /(ㄒoㄒ)/~~ 上一篇博文:Android 怎么实现支持所有View的通用的下拉刷新控件本篇博文准备讲如何实现下拉刷新和上拉加载,写的比较烂,篇幅比较长。 先预览下最终效

2016-07-04 17:39:35 3030

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

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

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

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

原文链接 : Android: Why your Canvas shapes aren’t smooth 原文作者 : Ali Muzaffar 译文出自 : 掘金翻译计划 译者 : Sausure 校对者:zhangzhaoqi, lovexiaov 通过 Google 搜索我们很快就能找到这个在 StackOverflow 中被问了很多次的问题,同时答案也经常是相同的:你需

2016-06-12 21:49:55 5021

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

一、关于前面四篇博文 Android热补丁动态修复技术(一):从Dex分包原理到热补丁 Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题! Android热补丁动态修复技术(三)—— 使用Javassist注入字节码,完成热补丁框架雏形(可使用) Android热补丁动态修复技术(四):自动化生成补丁——解决混淆问题前两篇博文主要是介绍热补丁修复技术的

2016-05-05 12:41:53 5431 33

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

一、前言在上一章中,我们使用javassist成功为项目注入了System.out.println(AntilazyLoad.class);这行代码,解决了class_ispreverified问题,可以正常使用了,但肯定还存在着很多未知的问题。首先是javassist的问题 class中使用到的类,必须添加到classpool的classpath中,我在Demo中写了一个自定义控件,注入代码的

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

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

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

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

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

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

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

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

一、参考文章:安卓App热补丁动态修复技术介绍——by QQ空间终端开发团队 文章:Android dex分包方案——by 猫的午后 开源项目:https://github.com/jasonross/Nuwa关于热补丁技术,QQ空间团队已经做了很详细的描述。但是细节上的东西都一带而过,这里结合Nuwa项目进行详细的介绍。 由于以上两篇文章调理都写的非常清晰,所以有些内容我就原话复制

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

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

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

2016-03-04 17:34:26 3504

原创 Android,水波进度条

一、前言这个自定义控件并不是我写的,而是Github上的一个开源控件。 实现方式非常的巧妙,涉及到的知识也比较多点。现在我就来和大家分析一下实现原理。 https://github.com/gelitenight/WaveView这是我重写了一遍的,加深理解。 二、实现原理这里涉及到了 Shader,Matrix图像变换矩阵,ObjectAnimator属性动画。 通过给画笔Paint设置B

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

原创 Android——Shader渲染器

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

2016-02-02 16:38:35 1416

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

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

2016-01-28 15:18:08 1244

原创 深入了解LayoutInflater

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

2016-01-26 09:46:15 664

原创 Android,气泡动画

一、前言本来想做一个类似window气泡屏保的动画效果。 奈何小球间的非对心碰撞公式没研究出来,对于我来说真的太复杂了,等公式给我研究差不多的时候,发现计算角度的问题也很复杂。博主表示高中的时候物理从未及格,而且这是大学物理的课程……然而我大学并没有学物理。 目前做出来的效果也很简单,只是检测了边界碰撞,原理就是动量守恒,速度交换。 实际效果如丝般顺滑,gif录制掉帧了。 二、...

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

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

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

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

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

修改历史2016.01.20 如果多次setNoticeList,可能会出现重复。那是因为setNoticeList的时候没有移除掉runnable,动画重复了的问题。不过也就那几秒钟有问题,等时间过后会自动回复正常。现在已经修复, Demo也已经重新上传了一份。一、写在前面很简单的一个小控件,项目刚好有这个需求,没有写的太好,动画能设置,能用就行,欢迎大家一起学习交流。 这是预览图,如果看到卡

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

android调用系统拍照

拍照或者从相册中选择图片后,我们都可以直接或间接的得到Uri或源文件。 通过`imageView.setImageUri(uri)`不会引发图片方向不正确的问题。 但是通过`BitmapFactory.decodeFile&#40;&#41;;`将源文件解析成Bitmap后再`imageView.setImageBitmap();`的话,图片的方向会发生偏转。 大多数情况下操作图片不可避免的涉及到直接操作Bitmap,所以就需要解决图片旋转问题了,下面是演示如何拍照、选择相册中的图片后进行Bitmap旋转。

2018-11-27

Android热补丁动态修复技术(四)Demo

热补丁框架算是完成了,剩下一个补丁包的签名校验问题,目前也不太想研究,想重构一下项目再说。 这是重构之前的项目下载地址,乱起八糟的,有兴趣的可以下载玩玩。

2016-04-21

HotpatchDemo

Android热补丁框架。 gradle 1.5以上版本 补丁在压缩包中

2016-04-14

Android热补丁动态修复技术(三)Demo

http://blog.csdn.net/u010386612 这是我的博客地址,欢迎大家多多交流。

2016-04-08

Android水波进度条

这是我的博客地址,欢迎大家交流。 http://blog.csdn.net/u010386612

2016-02-26

Android公告轮播条,NoticeViewDemo修复bug

自定义Android公告轮播条,就是那种文字公告。 这是我的博客地址:http://blog.csdn.net/u010386612

2016-01-20

Android公告条Demo,NoticeViewDemo

欢迎下载学习交流,Demo的Gif演示在博客上就有。 这是我的博客地址 http://blog.csdn.net/u010386612

2016-01-19

弹性效果的ViewPager的小Demo

欢迎下载学习交流。 这是我的博客地址 http://blog.csdn.net/u010386612

2016-01-11

CountDownTime

一个自定义的Android倒计时,直接继承View。 Demo比较简单,供大家下载学习交流

2015-12-28

LoadingPageView

日常开发中,需要用到耗时操作的页面我们都应该加入等待页面。

2015-11-11

博客文章标题无法修改。

发表于 2018-04-27 最后回复 2018-10-22

博客文章不见了,草稿箱的文章代替了上去

发表于 2016-04-11 最后回复 2018-04-27

昨晚发表的博客,不见了。

发表于 2015-12-26 最后回复 2015-12-31

空空如也

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

TA关注的人 TA的粉丝

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