自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 浅谈 splashscreen,PS 可用整张图片做背景哦!!越过Google的限制

前言:启动页几乎所有app都会有,常规做法就是用activity和fragment来实现启动页,通常启动页有很多定制化,比如背景、动态图等。只需要修改SplashScreen,splash_screen_view.xml,themes主题,MaskedDrawable可以不要了,直接上源码吧。但使用或了解过这个api都知道,有一定的限制,接下来我们简单的刨析一下为什么,最好我们再写个可定制的。但谷歌只提供了纯颜色的背景修改,中间icon,和底部的图片修改,具体可以看values的定义。

2024-03-21 16:36:44 375 1

原创 随便封装一下BaseActivity 之 二

这里的LoadSirLayoutInterface 其实也是通过静态代理,自定义LoadSir的各种布局,此处就不贴代码了。五、接下来就是各个接口的实现了,首先是菊花实现ILoadingImpl。都是利用代理,来实现封装、扩展。二、另外可以把菊花也封装成一个库,如这里利用LoadSir加以封装。四、再加上一个重新加载的接口,基本上 基础接口方法都差不多了。一、定义一个菊花interface,真正实现菊花的接口类。我们这样简单封装过后,撸起来也方便,扩展起来也方便。接着上回,菊花也稍微封装一下。

2024-01-29 14:29:28 379

原创 随便封装一下BaseActivity

五、实现interface,DispenseToolbar 利用静态代理,可以进一步把interface扩展(假设这写代码作为一个base库封装)六、代理实现DispenseToolbarImpl,若需要自定义不同的style可以,利用activity参数判断。三、创建状态栏属性代理类DispenseToolbarStyleDelegate。老码农,没什么激情撸码,随便封装一下base类,写来玩玩。这里的属性代理或静态代理也可以减去一层,看自己喜好。2、利用代理实现状态栏、菊花扩展。

2024-01-29 14:06:08 354

原创 viewmodel的封装

viewmodel简单封装

2023-03-23 11:22:30 376

原创 android 方法体任务队列

一、我们会遇到一种情况:1、点击某个按钮或发生某个信息指令,进而执行一个任务(如请求接口)2、但是!由于快速点击,或发生信息指令时、短时间内频繁执行了多次3、当我们收到某个信息指令时,只需执行一次任务时,代码逻辑显得更加杂乱因此,本文加入了方法体任务队列概念,不多说,直接上源码!!二、方法队列源码,FunQueueTask/** * 方法体任务队列 * 注: ...

2020-03-24 15:47:03 1138

原创 Android Studio项目发布到Maven仓库的入坑之路

一、注册账号首先你需要注册一个Bintray账号,注意此处需要点击Sign Up Here注册(或者直接访问https://bintray.com/signup/oss) 。绿色按钮是注册企业账号的,需要付费,有试用期,我们需要注册开发者账户,有很多文章没有标明这个问题。记得翻墙访问,不然怀疑人生!!二、创建仓库三、使用bintray-release上传,地...

2020-03-04 17:48:09 656

原创 android拍照、图库与裁剪

一、前言好多APP都有上传图片的功能,无聊是调起相册还是拍照,都必须要在activity的onActivityResult回调方法处理,实现起来比较繁琐。至此对其进一步封装。使用起来更加简单。二、直接上源码:GitHub源码1、首先创建一个PicOptions,作用是配置相关信息public class PicOptions { private boolean is...

2019-10-22 11:56:26 164

原创 RxBus的封装

要实现fragment与activity之前的通讯,或者service与activity的通讯,我们可以有好几种方式实现1、广播2、回调接口3、eventBus、RxBus4、其他封装了一下RxBus的使用,废话不多说,直接上源码:GitHub源码1、ThreadMode,所执行的线程public enum ThreadMode { /** ...

2019-09-10 16:18:10 361

原创 Okhttp3源码分析之六

了解OKHTTP的都知道,它提供websocket的使用声明OkHttp clientclient = new OkHttpClient.Builder() .readTimeout(3, TimeUnit.SECONDS) .build();创建websocketRequest request = new Requ...

2019-09-10 15:42:22 902

原创 Okhttp3源码分析之五

分析一下OKHTTP的拦截器//拦截器 Response getResponseWithInterceptorChain() throws IOException { // Build a full stack of interceptors. List<Interceptor> interceptors = new ArrayList<>();...

2019-09-09 18:31:32 212

原创 Okhttp3源码分析之四

看过OKHTTP源码的都会知道,里面有个任务调度Dispatcher这里分析一下Dispatcher源码:public final class Dispatcher { private int maxRequests = 64;//最大请求数 private int maxRequestsPerHost = 5;//最大主机数 private @Nullable Runnab...

2019-08-26 16:57:07 98

原创 Okhttp3源码分析之三

从Okhttp3源码分析之一可知,调用Call的enqueue执行最终的请求 //1.创建OkHttpClient对象 OkHttpClient okHttpClient = new OkHttpClient(); //2.创建Request对象,设置一个url地址(百度地址),设置请求方式。 Request request = ...

2019-08-26 15:27:42 123

原创 Okhttp3源码分析之二

从Okhttp3源码解析之一了解到,使用OKHTTP执行一个http请求需要四步一、接下来分析一下Request:public final class Request { final HttpUrl url;//请求地址 final String method;//请求模式post、get……等 final Headers headers;//请求头 final @Nul...

2019-08-25 15:07:24 171

原创 Okhttp3源码分析之一

一、OKHTTP简介OKHttp是一个处理网络请求的开源项目OKHttp GitHub地址OKHttp优点支持HTTP2/SPDY(SPDY是Google开发的基于TCP的传输层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。) socket自动选择最好路线,并支持自动重连,拥有自动维护的socket连接池,减少握手次数,减少了请求延迟,共享Socket,减少对服务器...

2019-08-25 14:18:20 207

原创 微信登录和分享的封装

一般APP的登录都有使用微信登录、接第三方登录,有两种方法:1、接第三方封装库,里面包含了目前主流的第三方登录2、自己接登录SDK这里简单的封装一下微信登录的回调activity:GitHub源码一、创建SDKWXEntryActivitypublic abstract class SDKWXEntryActivity extends Activity implement...

2019-08-25 12:30:32 531

原创 android数据库-sqlite基础类封装

android使用数据库存储,无非有两种1、使用原生的sqlite2、使用第三方库使用原生sqlite可封装成orm或者简单的封装(便于初级入手),关于sqlite orm。笔者作简单封装一下,直接上代码:GitHub源码一、创建一个DatabaseManager,管理数据库的打开和关闭public class DatabaseManager { private...

2019-08-25 11:59:37 895 1

原创 RxLifecycle源码分析

随着RxJava及RxAndroid的逐渐推广,使用者越来越多,但是有一个问题,RxJava的使用不当极有可能会导致内存泄漏目前网上对RxJava的内存泄漏有几种方案:1、RxLifecycle2、AutoDispose3、自己封装,手动为RxJava的每一次订阅进行控制,在指定的时机进行取消订阅个人对RxLifecycle使用比较多,简单直接,并且能够在Activity/Fr...

2019-08-24 15:43:33 141

原创 Retrofit源码分析之Rxjava转换器

一、在Retrofit源码分析之一中了解到,使用retrofit可以设置callAdapter/** * Api管理工具类,通过该类创建相应的api-service类 */object ApiServiceManager { private val gson = GsonBuilder().registerTypeAdapter(Date::class.java, Json...

2019-08-24 12:01:30 201

原创 Retrofit源码分析之gson解析器

1、在Retrofit源码分析之一中知道,使用retrofit可以添加解析器/** * Api管理工具类,通过该类创建相应的api-service类 */object ApiServiceManager { private val gson = GsonBuilder().registerTypeAdapter(Date::class.java, JsonDeseriali...

2019-08-24 11:34:14 379

原创 Retrofit源码分析之三

1、在Retrofit源码分析之二可知,最后调用HttpServiceMethod的parseAnnotations方法static <ResponseT, ReturnT> HttpServiceMethod<ResponseT, ReturnT> parseAnnotations( Retrofit retrofit, Method method, Req...

2019-08-24 11:14:16 133

原创 Retrofit源码分析之二

1、从Retrofit源码分析之一,可知retrofit创建时使用代理,接下来分析一下代码: public <T> T create(final Class<T> service) { //校验是否为接口,且不能继承其他接口 Utils.validateServiceInterface(service); // 是否需要提前解析接口方法 ...

2019-08-23 17:06:00 160

原创 Retrofit源码分析之一

Retrofit 请求网络实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp完成后续的请求操作,在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,后者根据用户的需求对结果进行解析的过程。Retrofit的大概原理过程如下:Retrofit 将 Http请求 抽象 成 Java接口 在接口里用 注解 描述和配置 网络...

2019-08-23 11:18:55 248

原创 android实现富文本

android要实现富文本有一下几种方法:Spannable Html.fromHtml 第三方库(RichText) GitHub地址:https://github.com/zzhoujay/RichText这里简单分析一下SpannableUtils和Html.fromHtml的实现一、SpannableStringBuilder分析要用Spannable离不开Spann...

2019-08-22 17:59:04 2845 1

原创 ipv4&ipv6导致微信H5支付问题

问题背景:微信APP支付需要与包名、签名绑定,因此客户端使用微信H5支付,可以避开大量马甲包支付问题使用微信H5支付偶尔会出去以下问题:意思是说在支付过程中,用户的ip有变动,从而导致支付失败!!为了测试这个问题开始采坑:1、模拟支付过程ip变动2、故意提交错误ip给微信结果:支付失败,出现上图奇怪的问题出现了:1、使用同一个网络,调...

2019-08-22 16:50:00 1403 1

原创 iOS边录边播放、实现试听

需求背景:实现一个边录制边播放的功能、可以暂停录制试听、同时需要实时显示音波图以下是采坑之路方法一:AVAudioRecorder录音wav格式面临问题:暂停的时候,没有生成真正的音频文件,因此不能试听思路:暂停就是结束,然后把一段段音频拼接在一起,两段wav音频用音轨的方式合并是没有停顿的结果:由于wav是由头文件和音频文件组成,合并到一起的wav 通过lame转mp3只...

2019-08-22 16:23:08 1613 1

原创 IM的实现到优化思路

实现IM通讯的基本方式:基于bio阻塞的socket,消息分发是activemq 私聊activeMQ做持久化(弃用数据库,因为数据库容易挂掉) 并发底、扩展性底、集群不了优化思路:(使用netty)nio客户端访问,经过Nginx转发到im service集群下 通过service集群,先执行登录,成功后返回im server的ip,port(轮询),并保存用户及ip,port连...

2019-08-22 15:44:50 409

原创 修复FrameSequenceDrawable 播放bug

使用方式和解析链接:https://blog.csdn.net/humorousz/article/details/79552641播放GIF偶尔出现频繁播、帧与帧之间的播放时长和实际的不同,原因是因为mLastSwap的使用来看看mLastSwap的赋值代码: @Override public void draw(Canvas canvas) { synch...

2019-08-22 15:15:30 756 1

原创 imageloader源码解析

使用方式就不说了、直接源码分析:一、ImageLoader分析(供上层调用,提供同步、异步加载方式)public void displayImage(String uri, ImageAware imageAware, DisplayImageOptions options, ImageSize targetSize, ImageLoadingListener list...

2019-08-22 14:53:34 147

原创 解决HorizontalScrollView和ListView滑动冲突

话不多说,直接附上代码:/** * 完美解决listview与HorizontalScrollView滑动事件冲突 * @author jy * */public class BouncyHScrollView extends HorizontalScrollView {private static final int MAX_X_OVERSCROLL_DIST

2014-05-16 14:12:56 1967 1

原创 activity完全退出程序

activity完全退出程序用system.exit(0)有些情况并不能实现,而且有时需要销毁部分activity,只保留一个或一部分activity时就难以实现,所以我们应该把所有activity加入一个集合里面,在对应的地方做相关操作。要实现这个功能最好处理的方法应该继承Application ,因为此类是唯一的,一个程序只有一个Application ,也是程序的入口。废话少讲,

2014-03-20 20:18:45 956

翻译 java.lang.ArrayIndexOutOfBoundsException: length=1; index=1

一个页面同时存在PhotoView与DrawerLayout,DrawerLayout组件抛出一个ArrayIndexOutOfBoundsException异常的shouldInterceptTouchEvent。请参阅下面的堆栈跟踪:03-19 15:32:36.720: E/AndroidRuntime(5284): FATAL EXCEPTION: main03-19 15

2014-03-19 16:11:43 6897 3

空空如也

空空如也

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

TA关注的人

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