Android
文章平均质量分 89
容华谢后
路漫漫其修远
展开
-
Android消息推送 SSE(Server-Sent Events)方案实践
最近公司项目用到了消息推送功能,在技术选型的时候想要找一个轻量级的方案,偶然看到一篇文章讲ChatGPT的对话机制是基于SSE来实现的,但是这种协议是基于Web的,客户端能不能用呢,搜索一番发现老朋友OkHttp已经贴心的准备好了一个SSE依赖库,于是便有了这篇文章。简单介绍下SSE协议,全称Server-Sent Events,2008年首次出现在HTML5规范中,在2014年随着HTML5被W3C推荐为标准,SSE也登上了舞台。原创 2024-01-24 09:00:00 · 2938 阅读 · 2 评论 -
Android Retrofit 给你的接口加上缓存
最近要对接口做一些优化,于是就想着给一些频繁获取数据的接口加上缓存功能,网上搜上一搜,一般都只支持GET请求,但是因为服务器那边接口比较特殊,参数较多的获取数据接口都是用的POST,用原生的缓存方式还不行。那只能自己实现一个,支持GET、POST请求方式,为了安全还要支持缓存数据加密,放到项目里试了试,还算比较稳定,于是便有了此篇文章。GitHub地址:https://github.com/alidili/Demos/tree/master/RetrofitCacheDemo。原创 2023-06-14 09:13:22 · 1970 阅读 · 0 评论 -
Chromium内核浏览器编译记(二)UI定制
在上一篇文章中,我们学习了如何编译Chromium内核浏览器,在开发中,经常需要对浏览器进行一些UI和功能的定制,今天就一起来看下,如何修改浏览器的UI功能。定制需求是这样的修改包名、版本号、应用图标、应用名称不显示应用第一次启动时的设置引导页应用全屏显示,移除首页的所有菜单栏增加点击两次退出应用的功能默认不加载新标签页。...............原创 2022-07-18 10:09:33 · 3306 阅读 · 12 评论 -
Android 谈谈我所理解的MVP
嗯,这篇博客应该有个副标题:Retrofit + RxJava + RxLifecycle + MVP在上一篇文章中,我们对Retrofit进行了封装,But,这种封装是不支持MVP模式的,今天就以Retrofit和RxJava为基础,谈谈我所理解的MVP。《Android Retrofit + RxJava使用详解》《Android 探讨一下Retrofit封装的最佳姿势》1.MVP VS MVC原创 2017-06-29 08:44:34 · 2576 阅读 · 1 评论 -
Android DataBinding & MVVM
先说说两者的关系,DataBinding是一个实现数据和UI绑定的框架,而MVVM是一种架构模式,实现MVVM模式需要借助DataBinding来完成。本文将以《Android 谈谈我所理解的MVP》中的例子为基础,使用MVVM模式重新实现一下。嗯,本篇博客也是有副标题的:Retrofit + RxJava + RxLifecycle + MVVM本文涉及到的一些基础知识:《Android Data原创 2017-08-09 08:33:39 · 1716 阅读 · 3 评论 -
Android DataBinding使用详解(二)
《Android DataBinding使用详解(一)》官方文档Demo下载地址1.在RecyclerView中使用DataBindingAdapter的定义方式和普通方式相同,都是继承了RecyclerView.Adapter,然后实现其中的方法,但是具体的实现方式还是有所差别的:public class RecyclerViewAdapter extends RecyclerView.Adapt原创 2017-07-26 08:54:44 · 1673 阅读 · 2 评论 -
Android DataBinding使用详解(一)
DataBinding是一个实现数据和UI绑定的框架,同时也是实现MVVM模式所依赖的工具。官方文档Demo下载地址1.构建环境在app根目录的build.gradle文件中加入DataBinding配置:android { .... dataBinding { enabled = true }}环境要求:系统版本:Android 2.1(API leve原创 2017-07-24 08:51:00 · 3283 阅读 · 4 评论 -
Android 使用JitPack快速发布你的GitHub开源库
1.介绍Android Studio使用了Gradle来管理依赖,这让引入第三方库变得更加方便高效,目前在Studio中使用Gradle依赖,有几种方法:jCenterMaven Central使用其他自定义的仓库使用Center和Maven Central的方式太过繁琐,实在不想用,在GitHub上发现,越来越多的开源库选择了JitPack来发布,JitPack实际上是一个自定义的Mave原创 2016-10-17 15:46:26 · 1638 阅读 · 0 评论 -
Android 使用代码实现一个选词(拖拽)填空题
GitHub传送门1.写在前面在上一篇文章《Android 使用代码实现一个填空题》中,我们学习了如何实现一个填空题,今天继续接着上一篇文章的节奏,学习一下如何实现一个选词填空题,由于本文中用到了一些上篇文章的知识点,所以还没有看过上篇文章的同学可以>戳这里<了解一下。首先看下效果图:2.学习一些基础知识选词填空题有一个很重要的功能就是拖拽,我们先来学习一下如何对View进行拖拽操作,写个简单的De原创 2017-10-10 17:28:30 · 2103 阅读 · 0 评论 -
Android RecyclerView下拉刷新 & 上拉加载更多
GitHub传送门1.写在前面本文主要实现的是上拉加载更多功能,下拉刷新使用的是Google官方的SwipeRefreshLayout控件,因为在实现这个功能的时候走了不少弯路,所以在此记录下来分享给大家,先看下效果图:2.实现上拉加载实际上就是给RecyclerView增加一个FooterView,然后通过判断是否滑动到了最后一条Item,来控制FooterView的显示和隐藏,接下来我们来看下如原创 2017-10-20 13:16:27 · 3664 阅读 · 9 评论 -
Android 使用RxLifecycle解决RxJava内存泄漏
RxLifecycle GitHub地址RxJava GitHub地址1.为什么会发生内存泄漏使用RxJava发布一个订阅后,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏。 写段代码测试一下,定义一个Activity,布局中显示一张图片,这样可以直观的看到此Activity的内存占用情况,然后在Activi原创 2017-07-06 08:41:22 · 27721 阅读 · 8 评论 -
RecyclerView横向滑动监听,判断是否滑动到了最后一个Item
项目中的需求,RecyclerView横向滑动列表,要有加载更多的功能,给RecyclerView设置一个滑动监听,在onScrolled方法中判断一下滑动方向,然后在onScrollStateChanged方法中判断一下是否滑动到最后一个item即可,代码中已经写了详细的注释:public abstract class EndlessRecyclerOnScrollListener ex原创 2016-07-25 14:54:13 · 14130 阅读 · 0 评论 -
Android 自定义Switch开关按钮的样式
GitHub传送门1.写在前面本文主要讲的是在Android原生Switch控件的基础上进行样式自定义,内容很简单,但是在实现的过程中还是遇到了一些问题,在此记录下来,希望对大家能够有所帮助,看下效果图:2.自定义样式2.1 原生样式首先看下原生的效果(Android 7.1):布局文件如下:<Switch android:layout_width="wrap_content" an原创 2017-12-07 08:52:07 · 6264 阅读 · 2 评论 -
您有一份AndroidX升级指南未领取
转载请注明出处本文出自 容华谢后的博客1.介绍相信大家对Android Support Libray都不陌生,随着Android版本的快速迭代,Google推出了Support Libray用以兼容低版本的Android设备。但是随着版本越来越多,支持库的维护和使用也变得越来越复杂,于是AndroidX应运而生,接下来我们一起来学习下如何迁移到AndroidX吧!AndroidX基于A...原创 2018-11-19 08:26:56 · 2012 阅读 · 3 评论 -
Android Handler机制完全解析
Android Handler机制完全解析1.为什么要引入Handler机制?举个栗子:通过网络获取数据然后显示在TextView中,由于网络通信属于耗时操作,所以必须在子线程中完成,但是子线程中是不能更新UI的(特殊情况除外),为了解决以上问题,Android引入了Handler机制,由Handler来负责与子线程进行通讯,从而使子线程与主线程之间建立起协作的桥梁,使Android的UI更新问题得原创 2017-05-06 23:36:04 · 848 阅读 · 0 评论 -
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:51 · 5594 阅读 · 2 评论 -
自己动手写一个Android Studio插件
1.介绍官方文档在使用Android Studio开发的时候,大部分人都会使用一些插件来提高开发效率,比如:ButterKnife 自动生成注解代码PermissionsDispatcher 更方便的进行Android 6.0权限处理像这样的插件还有很多很多,但我们不能一直停留在用的程度,这样太不符合程序猿的风格了,今天就让我们自己动手来写一个插件,当以后自己有好的想法的时候,也能写一个出色的原创 2016-10-21 11:38:13 · 4249 阅读 · 4 评论 -
Android 6.0运行时权限详解
1.介绍Runtime Permissions官方说明Android 6.0之前,权限在应用安装过程中只询问一次,以列表的形式展现给用户,然而大多数用户并不会注意到这些,直接就下一步了,应用安装成功后就会被赋予清单文件中的所有权限,应用就可以在用户不知情的情况下进行非法操作(比如偷偷的上传用户数据)。Android 6.0版本中运行时权限的出现解决的这一问题,一些高危权限会在应用的运行过程中动态申请原创 2016-09-12 14:33:04 · 7454 阅读 · 30 评论 -
Android 6.0运行时权限问题汇总
本文主要收集了一些运行时权限的常见问题,作为上一篇文章《Android 6.0运行时权限详解》的补充,还没有看过上一篇博客的同学可以先了解下。本文长期更新,如果你遇到了相关问题,欢迎在评论区指出。1.在MIUI上使用遇到的问题这个问题来自于GitHub上的反馈,有一位同学使用小米note(Android6.0系统)测试,点了拒绝授权以后,再次申请不会再次弹出权限申请的提示,而是显示“权原创 2016-11-04 10:02:11 · 5942 阅读 · 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:34 · 1770 阅读 · 0 评论 -
TextView中部分文字高亮显示
/** * 关键字高亮显示 * * @param context 上下文 * @param text 需要显示的文字 * @param target 需要高亮的关键字 * @param color 高亮颜色 * @param start 头部增加高亮文字个数 * @param end 尾部增加高亮文字个数 * @return 处理完后的结果 */pub原创 2016-08-01 10:53:58 · 3136 阅读 · 0 评论 -
Android Dialog与软键盘的正确打开方式
1.写在前面2017年的第一篇博客,首先祝大家新年快乐,在新的一年里健健康康、平平安安!本篇博客的主要内容是关于在Dialog中软键盘的显示与隐藏问题,需求是在Dialog中有一个密码输入框,弹出Dialog显示软键盘,关闭Dialog隐藏软键盘。 嗯,是不是有点简单,不过在实现的过程中还是遇到了一些问题,在试过了网上大部分的方法之后,最终找到一个还不错的方法,分享给大家。看下效果图:2.实现过程原创 2017-02-05 11:37:12 · 10161 阅读 · 4 评论 -
Android 仿京东金融首页头像效果
1.介绍看下效果图,gif录的有些卡顿,在真机上运行效果很好。2.实现很有意思的一个效果,原理其实很简单,就是通过监听ScrollView在Y轴的滑动距离,然后在代码中动态设置头像的位置和大小。public class MainActivity extends AppCompatActivity { private CircleImageView ivPortrait; private原创 2017-02-06 09:24:47 · 1431 阅读 · 0 评论 -
Android属性动画(三) TimeInterpolator(插值器)
OK,继续学习属性动画,本篇文章是属性动画系列的第三篇文章了,今天来学习一下属性动画中的TimeInterpolator,如果你对属性动画还不太熟悉,可以点击下面的链接学习一下前两篇文章的知识:《Android属性动画(一) 初识基本用法》《Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator》1.介绍先说说Interpolator,在Androi原创 2017-03-13 10:00:02 · 2116 阅读 · 0 评论 -
Android属性动画(一) 初识基本用法
1.介绍Android系统为我们提供了三种动画效果的实现方式:补间动画(Tween Animation):只能对View进行动画操作,支持移动、旋转、透明、缩放四种效果,有一定的局限性。逐帧动画(Frame Animation):把一个动画分成多张图片,然后把这些图片连贯起来播放,原理和动画片类似。属性动画(Property Animation):通过改变对象的属性值来实现的动画效果,不局限使原创 2017-03-01 09:48:52 · 943 阅读 · 0 评论 -
Android属性动画(二) ValueAnimator的实际应用 & 自定义TypeEvaluator
在上一篇文章《Android属性动画(一) 初识基本用法》中,我们学习了属性动画的基本用法,但是在一些场景中,这些用法还远不能满足我们的需求,今天就让我们来学习一下属性动画的高级用法吧!1.ValueAnimator的实际应用在上篇文章中我们学习到,ValueAnimator.ofInt()方法可以帮我们计算初始值到结束值之间的动画过渡值,但是这些值如何应用到实际的View中呢,举个简单的例子来实践原创 2017-03-03 09:51:08 · 1336 阅读 · 5 评论 -
Android 探讨一下Retrofit封装的最佳姿势
在上一篇文章《Android Retrofit + RxJava使用详解》中,我们学习了Retrofit的一些基本用法,但在实际的项目使用中,还是会出现一些问题,今天就让我们一起来探讨一下如何对Retrofit进行封装吧!如果你对Retrofit还不太了解,可以>戳这里<学习一下。如果你用的是MVP,这篇文章可能不太适合你。1.背景介绍首先来回顾一下Retrofit的基本使用流程,直接上代码:/**原创 2017-06-27 08:39:48 · 1841 阅读 · 2 评论