
Android
容华谢后
路漫漫其修远
-
原创 Android Handler机制完全解析
Android Handler机制完全解析1.为什么要引入Handler机制?举个栗子:通过网络获取数据然后显示在TextView中,由于网络通信属于耗时操作,所以必须在子线程中完成,但是子线程中是不能更新UI的(特殊情况除外),为了解决以上问题,Android引入了Handler机制,由Handler来负责与子线程进行通讯,从而使子线程与主线程之间建立起协作的桥梁,使Android的UI更新问题得2017-05-06 23:36:04661
0
-
原创 Android 谈谈我所理解的MVP
嗯,这篇博客应该有个副标题:Retrofit + RxJava + RxLifecycle + MVP在上一篇文章中,我们对Retrofit进行了封装,But,这种封装是不支持MVP模式的,今天就以Retrofit和RxJava为基础,谈谈我所理解的MVP。《Android Retrofit + RxJava使用详解》《Android 探讨一下Retrofit封装的最佳姿势》1.MVP VS MVC2017-06-29 08:44:342119
1
-
原创 Android DataBinding & MVVM
先说说两者的关系,DataBinding是一个实现数据和UI绑定的框架,而MVVM是一种架构模式,实现MVVM模式需要借助DataBinding来完成。本文将以《Android 谈谈我所理解的MVP》中的例子为基础,使用MVVM模式重新实现一下。嗯,本篇博客也是有副标题的:Retrofit + RxJava + RxLifecycle + MVVM本文涉及到的一些基础知识:《Android Data2017-08-09 08:33:391335
3
-
原创 Android DataBinding使用详解(二)
《Android DataBinding使用详解(一)》官方文档Demo下载地址1.在RecyclerView中使用DataBindingAdapter的定义方式和普通方式相同,都是继承了RecyclerView.Adapter,然后实现其中的方法,但是具体的实现方式还是有所差别的:public class RecyclerViewAdapter extends RecyclerView.Adapt2017-07-26 08:54:441118
2
-
原创 Android DataBinding使用详解(一)
DataBinding是一个实现数据和UI绑定的框架,同时也是实现MVVM模式所依赖的工具。官方文档Demo下载地址1.构建环境在app根目录的build.gradle文件中加入DataBinding配置:android { .... dataBinding { enabled = true }}环境要求:系统版本:Android 2.1(API leve2017-07-24 08:51:002433
4
-
原创 Android 使用JitPack快速发布你的GitHub开源库
1.介绍Android Studio使用了Gradle来管理依赖,这让引入第三方库变得更加方便高效,目前在Studio中使用Gradle依赖,有几种方法:jCenterMaven Central使用其他自定义的仓库使用Center和Maven Central的方式太过繁琐,实在不想用,在GitHub上发现,越来越多的开源库选择了JitPack来发布,JitPack实际上是一个自定义的Mave2016-10-17 15:46:261467
0
-
原创 Android 使用代码实现一个选词(拖拽)填空题
GitHub传送门1.写在前面在上一篇文章《Android 使用代码实现一个填空题》中,我们学习了如何实现一个填空题,今天继续接着上一篇文章的节奏,学习一下如何实现一个选词填空题,由于本文中用到了一些上篇文章的知识点,所以还没有看过上篇文章的同学可以>戳这里<了解一下。首先看下效果图:2.学习一些基础知识选词填空题有一个很重要的功能就是拖拽,我们先来学习一下如何对View进行拖拽操作,写个简单的De2017-10-10 17:28:301226
0
-
原创 Android RecyclerView下拉刷新 & 上拉加载更多
GitHub传送门1.写在前面本文主要实现的是上拉加载更多功能,下拉刷新使用的是Google官方的SwipeRefreshLayout控件,因为在实现这个功能的时候走了不少弯路,所以在此记录下来分享给大家,先看下效果图:2.实现上拉加载实际上就是给RecyclerView增加一个FooterView,然后通过判断是否滑动到了最后一条Item,来控制FooterView的显示和隐藏,接下来我们来看下如2017-10-20 13:16:272747
9
-
原创 Android 使用RxLifecycle解决RxJava内存泄漏
RxLifecycle GitHub地址RxJava GitHub地址1.为什么会发生内存泄漏使用RxJava发布一个订阅后,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏。 写段代码测试一下,定义一个Activity,布局中显示一张图片,这样可以直观的看到此Activity的内存占用情况,然后在Activi2017-07-06 08:41:2225517
8
-
原创 RecyclerView横向滑动监听,判断是否滑动到了最后一个Item
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateChanged方法中判断一下是否滑动到最后一个item即可,代码中已经写了详细的注释:public abstract class EndlessRecyclerOnScrollListener ex2016-07-25 14:54:1313341
0
-
原创 Android 自定义Switch开关按钮的样式
GitHub传送门1.写在前面本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:2.自定义样式2.1 原生样式首先看下原生的效果(Android 7.1):布局文件如下:<Switch android:layout_width="wrap_content" an2017-12-07 08:52:074597
2
-
原创 Android Retrofit + RxJava使用详解
1.Retrofit基本使用首先来了解下Retrofit是什么,在官网中对于Retrofit的描述是这样的: A type-safe HTTP client for Android and Java. 适用于Android和Java的类型安全的HTTP客户端。可以理解成一个封装好的网络请求库。Retrofit GitHub地址接下来学习一下Retrofit的基本使用方法:在app根2017-06-21 08:32:512918
2
-
原创 Android 探讨一下Retrofit封装的最佳姿势
在上一篇文章《Android Retrofit + RxJava使用详解》中,我们学习了Retrofit的一些基本用法,但在实际的项目使用中,还是会出现一些问题,今天就让我们一起来探讨一下如何对Retrofit进行封装吧!如果你对Retrofit还不太了解,可以>戳这里<学习一下。如果你用的是MVP,这篇文章可能不太适合你。1.背景介绍首先来回顾一下Retrofit的基本使用流程,直接上代码:/**2017-06-27 08:39:481307
2
-
原创 Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator
在上一篇文章《Android属性动画(一) 初识基本用法》中,我们学习了属性动画的基本用法,但是在一些场景中,这些用法还远不能满足我们的需求,今天就让我们来学习一下属性动画的高级用法吧!1.ValueAnimator的实际应用在上篇文章中我们学习到,ValueAnimator.ofInt()方法可以帮我们计算初始值到结束值之间的动画过渡值,但是这些值如何应用到实际的View中呢,举个简单的例子来实践2017-03-03 09:51:081168
5
-
原创 自己动手写一个Android Studio插件
1.介绍官方文档在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,比如:ButterKnife 自动生成注解代码PermissionsDispatcher 更方便的进行Android 6.0权限处理像这样的插件还有很多很多,但我们不能一直停留在用的程度,这样太不符合程序猿的风格了,今天就让我们自己动手来写一个插件,当以后自己有好的想法的时候,也能写一个出色的2016-10-21 11:38:133813
4
-
原创 Android 6.0运行时权限详解
1.介绍Runtime Permissions官方说明Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。Android 6.0版本中运行时权限的出现解决的这一问题,一些高危权限会在应用的运行过程中动态申请2016-09-12 14:33:046605
30
-
原创 Android 6.0运行时权限问题汇总
本文主要收集了一些运行时权限的常见问题,作为上一篇文章《Android 6.0运行时权限详解》的补充,还没有看过上一篇博客的同学可以先了解下。本文长期更新,如果你遇到了相关问题,欢迎在评论区指出。1.在MIUI上使用遇到的问题这个问题来自于GitHub上的反馈,有一位同学使用小米note(Android6.0系统)测试,点了拒绝授权以后,再次申请不会再次弹出权限申请的提示,而是显示“权2016-11-04 10:02:115231
0
-
原创 Android AES加密解密
补齐方式采用的是:不足16字节,补齐内容为差值(比如数据是10个字节,补齐的内容就是6)。import javax.crypto.Cipher;import javax.crypto.spec.SecretKeySpec;/** * AES加密解密工具 * * @author yangle */public class AESUtils { /** * AES加密2016-07-14 17:24:341617
0
-
原创 TextView中部分文字高亮显示
/** * 关键字高亮显示 * * @param context 上下文 * @param text 需要显示的文字 * @param target 需要高亮的关键字 * @param color 高亮颜色 * @param start 头部增加高亮文字个数 * @param end 尾部增加高亮文字个数 * @return 处理完后的结果 */pub2016-08-01 10:53:582790
0
-
原创 Android Dialog与软键盘的正确打开方式
1.写在前面2017年的第一篇博客,首先祝大家新年快乐,在新的一年里健健康康、平平安安!本篇博客的主要内容是关于在Dialog中软键盘的显示与隐藏问题,需求是在Dialog中有一个密码输入框,弹出Dialog显示软键盘,关闭Dialog隐藏软键盘。 嗯,是不是有点简单,不过在实现的过程中还是遇到了一些问题,在试过了网上大部分的方法之后,最终找到一个还不错的方法,分享给大家。看下效果图:2.实现过程2017-02-05 11:37:128809
4
-
原创 Android 仿京东金融首页头像效果
1.介绍看下效果图,gif录的有些卡顿,在真机上运行效果很好。2.实现很有意思的一个效果,原理其实很简单,就是通过监听ScrollView在Y轴的滑动距离,然后在代码中动态设置头像的位置和大小。public class MainActivity extends AppCompatActivity { private CircleImageView ivPortrait; private2017-02-06 09:24:471108
0
-
原创 Android属性动画(三) TimeInterpolator(插值器)
OK,继续学习属性动画,本篇文章是属性动画系列的第三篇文章了,今天来学习一下属性动画中的TimeInterpolator,如果你对属性动画还不太熟悉,可以点击下面的链接学习一下前两篇文章的知识:《Android属性动画(一) 初识基本用法》《Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator》1.介绍先说说Interpolator,在Androi2017-03-13 10:00:021650
0
-
原创 Android属性动画(一) 初识基本用法
1.介绍Android系统为我们提供了三种动画效果的实现方式:补间动画(Tween Animation):只能对View进行动画操作,支持移动、旋转、透明、缩放四种效果,有一定的局限性。逐帧动画(Frame Animation):把一个动画分成多张图片,然后把这些图片连贯起来播放,原理和动画片类似。属性动画(Property Animation):通过改变对象的属性值来实现的动画效果,不局限使2017-03-01 09:48:52789
0
-
原创 您有一份AndroidX升级指南未领取
转载请注明出处本文出自 容华谢后的博客1.介绍相信大家对Android Support Libray都不陌生,随着Android版本的快速迭代,Google推出了Support Libray用以兼容低版本的Android设备。但是随着版本越来越多,支持库的维护和使用也变得越来越复杂,于是AndroidX应运而生,接下来我们一起来学习下如何迁移到AndroidX吧!AndroidX基于A...2018-11-19 08:26:561667
3