自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 EventBus的优雅封装

EventBus是一款针对Android优化的发布/订阅事件总线。可以替代广播、startActivityForResult、Handler、异步回调等来实现各组件间、组件与后台线程间的通信。它的优点是开销小,代码更优雅,以及将发送者和接收者解耦。通常我们在使用EventBus的时候都是直接需要接收通信的Activity/Fragment中通过EventBus.getDefault().reg...

2018-03-28 12:25:30 1672

原创 分享两周以来的面试经历

金三月、银四月,过年回来是跳槽的高峰期,不安分的小编也投了几家,想换个工作,换个环境。两个星期来,面了四家公司,现在将面试内容整理与大家分享。某知名在线教育公司VideoView、ExoPlayer、IjkPlayer和Vitamio这几种主流播放器的比较;垃圾回收机制,JVM内存分配、如何判定对象可回收;算法:n(很大)个无序数中找最大的10个数;谈谈内存优化;如何反编译,...

2018-03-26 09:30:15 288

原创 数据结构笔记——队列

定义队列(Queue):是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出的线性表。允许插入的一端称为队尾,允许删除的一端称为队头。如下图所示:循环队列线性表有顺序存储和链式存储,栈是线性表,所以有这两种存储方式。同样,队列作为一种特殊的线性表,也同样存在这两种存储方式。队列顺序存储的不足假设有一个队列有n个元素,则顺序存储的队列...

2018-03-25 21:56:12 288

原创 数据结构笔记——栈

定义栈(stack):是限定仅在表尾进行插入和删除操作的线性表。我们允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称作后进先出(Last In First Out)的线性表。这里应该注意,栈是一种特殊的线性表。栈的特殊之处在于限制了线性表的插入和删除的位置。栈是线性表,那么就具有线性关系,即前驱后继关系。栈底是固定的,...

2018-03-22 22:41:49 232

原创 数据结构笔记——线性表(下)

了解过线性表的链式存储结构以后,有人就想出来用数组来代替指针,来描述单链表。看看他们是怎么做到的。静态链表让数组的元素都由两个数据域组成,data和cur。也就是说,数组的每个下标都有对应的一个data和cur。数据域data,用来存放数据元素,而cur相当于单链表中的next指针,存放该元素的后继在数组中的下标,我们把cur叫做游标。这种用数组描述的链表叫做静态链表,我们把这种描...

2018-03-14 14:26:21 191

原创 数据结构笔记——线性表(中)

线性表的链式存储结构1、线性表链式存储结构定义先看个图线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。这就意味着,这些数据元素可以存在内存未被占用的任意位置。以前的顺序存储结构中,每个数据元素只需要存储数据元素就可以了。现在链式结构中,处理要存储数据元素信息之外,还要存储它的后继元素的存储地址。为了表示每...

2018-03-07 21:12:59 296

原创 数据结构笔记——线性表(上)

线性表:零个或多个数据元素的有限序列。线性表的定义线性表,从名字上可以感觉到,是具有像线一样的性质的表。官方定义: 线性表(List):零个或多个数据元素的有限序列。注意;首先它是一个序列。也就是说,元素之间是有序的,若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他每个元素有且只有一个前驱和后继。线性表强调有限,元素个数是有限的。其结构如下图:...

2018-03-05 09:05:38 271

原创 数据结构笔记——算法

算法:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个步骤。算法定义指令:能被人或者计算机装置执行。算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表达一个或者多个步骤。算法的核心在于有限的指令序列。算法的特性1、输入输出算法具有零个或者多个输入。算法至少要有一个或多个输出...

2018-02-28 23:45:37 286

原创 数据结构笔记——总述

数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。介绍一个很常见的公式: 程序设计 = 数据结构 + 算法基本概念和术语1、数据数据是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。2、数据元素数据元素是组成数据的、有一定意义的基本单位,在计算机中通常作为整体...

2018-02-27 21:32:53 251

原创 Android中的Vector

一、背景随着 Android 的碎片化越来越严重,适配成为一个开发中一个痛点。如果 UI 只切一套图,但是在一些特定机型上难免会出现模糊或者变形的情况,如果切多套不同分辨率的图,虽然能解决适配问题,但是造成安装包过大的问题,很多开发者都会为这个问题感到头疼。终于,Android 的 Vector 的出现,可以解决这个问题了。二、Vector是什么我们在了解Vector之前,我们必须...

2018-02-26 15:36:38 694

原创 实用的 Android 开源库使用指南

在Android的开发过程中,每个开发者或多或少的都使用过第三方的开源库,使用第三方的开源库可以给开发者节省大量的精力和时间,进而更好的关注应用本身的业务逻辑下面列出一些开发者们非常常用的开源库。FrescoFresco是非常强大的显示图像的开源库,它能够很好的处理图像的加载和显示。能够加载网络、本地数据库、本地资源中的图像,在图像加载出来之前,还能够预先设置一个预设的图像占位符,有二...

2018-02-22 20:04:33 575

原创 Json解析库Moshi——不只是Gson

说到Json解析库,网上可以说一找一大堆,Json解析库确实是大部分程序员都会使用的一类库,虽然自己完全可以一步步去解析,但是其实真的没必要自己去写,不会偷懒的程序员不是好程序员。说到moshi,可能很多童鞋没听过,但是说到square团队,大家基本上都是听说过的,moshi就是该团队出品的一个Json解析库。地址是:https://github.com/square/moshi这里写...

2018-02-22 19:07:46 1397

原创 和自己走走心——2017年总结

关键词2017年,是自己毕业的第二年,也是从事Android开发第三年。每一年似乎一点都没察觉,就到了年底。尤其是在毕业之后,才深刻地感受到什么叫时光飞逝。过完年会,正好手活儿不多,就安静地写写文章,整理一下这一年,和自己走走心。如果用简单词语来总结这一年,我觉得应该是:平淡、学习。这一年,生活平平淡淡,有值得高兴的事,也有遇到一些“麻烦”。一年中,一直在不断地学习,不断地充电,写了很...

2018-02-09 17:11:08 436

原创 Android 5.0以上系统常用控件着色指南

简介当我们新建一个项目的时候,都会给Application或者某些Activity设置theme:android:theme="@style/AppTheme"这时就需要我们选择或者自定义一个主题,那每个属性又都是什么含义呢?来看个例子:name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">

2018-02-07 15:12:32 221

原创 我的图片四级缓存框架

开发App一定涉及到图片加载、图片处理,那就必须会用到三方的图片框架,要么选择自己封装。至于主流的三方图片框架,就不得不说老牌的ImageLoader、如今更流行的Glide、Picasso和Fresco。但三方的框架本文不会过多介绍。Glide等框架,毕竟是大神及团队花费很大精力开发和维护的开源框架,他们的设计思路、性能优化、代码规范等等很值得我们学习,之前一段时间也研究过Glide的源码(

2018-01-28 22:49:59 386

原创 微信、支付宝、银联开发遇到的那些坑

出于安全考虑,验签我们都是放到后台进行验签的。对于我们移动端节省了很多的劳动力。支付界面如下:支付完成界面如下:ok,接下来开始我们轻松的开发之旅:准备:需要以公司名义,在支付宝,微信等平台上开通公司账户并且认证,如:支付过程中需要公司的帐号和商户号。支付宝:1、获取订单信息(根据自己公司的实际情况:可以在服务端完成,也可以在本地完成)2、客户端拿这些订单

2018-01-24 09:39:16 2683

原创 MVP模式的经典封装

人之所以能,是相信能。说到MVP,大家应该都不陌生了,由于其高度解等等优点,越来越多的项目使用这个设计模式。然而,优点虽在,缺点也不少,其中一个就是类多了很多,而且V与P直接要项目通信,那么P就得持有V得实例,但如果活动挂掉了,如果没有对V进行释放,还有导致内存溢出得问题,而且,那么多的接口函数,看得到人眼花缭乱,也使得很多人在使用这个模式的时候望而尚步。回归正题,最近在进行代码重构,决

2018-01-22 09:18:44 503

原创 手撸Router——解决跨模块下的页面跳转

人之所以能,是相信能。一、前言开始模块化开发项目之后,一个很重要的问题就是页面见的跳转问题。关于模块化发开,可详见我的另一片文章Android模块化开发探索。正是由于将项目模块化拆分,各模块之间没有任何依赖关系,也互相不可见,那么从A模块的a界面跳转到B模块的b界面该怎么办呢?二、跨模块跳转的方法这里我们会先介绍这几种常见的跳转方法:显示跳转隐示跳转Scheme协议跳转Router路由表方

2018-01-10 15:57:50 3453

原创 java进阶之自定义注解

一、简介注解是Java 1.5引入的,可以提供代码的额外信息,目前正在被广泛应用。除了Java内置注解,我们也可以自定义注解。以下就是一个自定义注解的简单例子:@Target(ElementType.TYPE) //注解作用于类型(类,接口,注解,枚举)@Retention(RetentionPolicy.RUNTIME) //运行时保留,运行中可以处理@Inherited /

2018-01-09 14:58:56 366

原创 java进阶之抽象类、接口和多态

抽象类和接口抽象层次不同 抽象类是对类抽象,而接口是对行为的抽象抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部行为进行抽象跨域不同 抽象类所跨域的是具有相似特点的类,而接口却可以跨域不同的类抽象类所体现的是一种继承关系,考虑的是子类与父类本质“是不是”同一类的关系而接口并不要求实现的类与接口是同一本质,它们之间只存在“有没有这个能力”的关系

2017-12-28 14:05:27 214

原创 RecyclerView平滑地滚动到指定位置

背景在项目中,想使RecyclerView慢慢的平缓滑动指定位置,于是使用:RecyclerView.smoothScrollToPosition(int);发现效果并不理想,滑动过程很突兀,很快就滑动到了指定位置,并没有像函数名那样smooth(流畅的,平滑的),也就是说smoothScrollToPosition没有滑动效果,黑人问号???探索历程既然函数名是流畅平缓的滑动到指定位置,为什么并不

2017-12-28 11:56:19 5342 1

原创 圣诞雪花纷飞自定义View

github地址:https://github.com/shuaijia/JSBaseDemo/blob/master/app/src/main/java/com/jia/demo/view/SnowView.java先定义下实体类吧:/** * Description: 雪花效果实体类 * Created by jia on 2017/12/25. * 人之所以能,是相信能 */publ

2017-12-25 11:13:14 236

原创 java线程池之小结

先看两个概念:线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。线程池定义线程池基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对象归池,这样

2017-12-18 17:48:19 257

原创 Android使用Gradle实现多渠道打包

这里我们主要用到gradle文件中的buildTypes和productFlavors,今天我们主要研究下它俩。先上图:buildTypes构建类型 默认情况下,Android插件自动为项目构建一个debug和一个release版本的应用。这两个版本的不同主要体现在在非开发机上的调试功能以及APK的签名方式。debug版本使用一个用公开的name/password创建的key来签名(这样构建的时候

2017-12-14 17:01:20 191

原创 使用Retrofit+RxJava实现带进度下载文件

Retrofit+RxJava已经是目前市场上最主流的网络框架,使用它进行平常的网络请求异常轻松,之前也用Retrofit做过上传文件和下载文件,但发现:使用Retrofit做下载默认是不支持进度回调的,但产品大大要求下载文件时显示下载进度,那就不得不深究下了。接下来我们一起封装,使用Retrofit+RxJava实现带进度下载文件。github:https://github.com/shuaiji

2017-12-11 18:15:54 17647 3

原创 使用Span实现各种酷炫效果

前一段时间一直在做富文本展示和文本处理,主要用到了Html.fromHtml()实现加载网页,但实现整段文本的某些特殊如个别文字的点击,改背景色、前景色等效果,就用到了我们今天要用到的Span这个类。关于加载网页或个别文字点击效果,可以阅读我之前写的一篇文章——用TextView实现富文本展示,点击断句和语音播报。您也关注: - https://github.com/shuaijia/SpanSt

2017-12-07 15:50:55 5049

原创 安卓指纹对称加密及登录功能的实现

一、概述Android下的指纹识别是在Android6.0后添加的功能,因此,在实现的时候要判断用户机是否支持,然后对于开发来说,使用场景有两种,分别是本地识别和跟服务器交互; 本地识别:在本地完成指纹的识别后,跟本地信息绑定登陆; 后台交互:在本地完成识别后,将数据传输到服务器;无论是本地还是与服务器交互,都需要对信息进行加密,通常来说,与本地交互的采用对称加密,与服务器交互则采用非对称加密

2017-11-27 16:41:52 4167 1

原创 Android事件分发图

Android事件分发图

2017-11-17 16:55:26 193

原创 TextView自定义下划线、点击弹框

github地址:https://github.com/shuaijia/NoteText更多精彩内容,请关注我的微信公众号——安卓干货营前言最近公司有意需求,就是类似于电子书,选择一段文字然后做笔记,需要给做过的文字加下划线,下划线最后加一图标按钮,点击弹框显示笔记内容。立马会想到使用TextView的fromHtml方法,给添加笔记的文本手动加标签,或者使用SpanString类的相关方法设置标

2017-11-14 18:21:42 507

原创 用代码手把手教你使用MVVM

源码请点击:https://github.com/shuaijia/JsMVVM您还可以关注我的微信公众号——安卓干货营,与我交流和获取更多精彩内容。概述说到Android MVVM,就会联想到DataBinding框架。然而两者的概念是不一样的,不能混为一谈。MVVM是一种架构模式,而DataBinding是一个实现数据和UI绑定的框架,是构建MVVM模式的一个工具。网上关于MVVM框架的搭建和使

2017-11-11 23:10:18 1191 1

原创 歌词显示控件的实现下——自定义View

先看下效果 在上篇文章中呢,分享了关于lrc歌词文件的解析方法,根据歌词文件格式,解析出对应实体类。但是,怎样才能让让自己的音乐播放器的歌词像网易云音乐一样,随音乐(歌词时间)滚动、当前歌词高亮、其他歌词渐变等效果呢?接下来我想和大家分享的就是如何通过自定义View实现炫酷的LyricView歌词显示控件。分析我们最重要的目的是将文字绘制在View中,并设置各种效果和动画,而在绘制之前我们需要计算

2017-11-02 17:27:05 675

原创 歌词显示控件的实现上——歌词解析

最近打算仿网易云音乐的音乐播放器,除了网络框架、接口数据等这些外,最核心的就是音乐的播放和歌词的显示。考虑到歌词显示控件涉及到歌词解析,自定义控件的实现等等诸多方面,可能文章的篇幅上会比较冗长,同时也为了方便自己和码友们能够根据自己的需求和爱好各取所需,将《歌词显示控件的实现上》这篇文章分成上、下两篇,分别是《歌词显示控件的实现上——歌词解析》和《歌词显示控件的实现下——歌词展示自定义View》。而

2017-10-31 17:05:53 849 1

原创 用TextView实现富文本展示,点击断句和语音播报

最近有一个需求:移动端需要展示用户在PC端做的笔记,而笔记内容是富文本形式——有图片,有文字,文字可以设置颜色、加粗、倾斜等等。同时,用户点击的时候能够语音朗读所点击的当前整句的内容。第一反应就是富文本!PC端生成的就是html文件,创给我,直接用WebView展示不就ok了嘛!但是,还有一需求:点击断句——我们需要判断用户的点击,定位到所点击的整句话,然后再将整句内容实现语音播报。这样的话WebV

2017-10-30 16:29:56 1279 1

转载 腾讯浏览服务接入文档

一、简介1. TBS(腾讯浏览服务)的优势1) 速度快:相比系统webview的网页打开速度有30+%的提升;2) 省流量:使用云端优化技术使流量节省20+%;3) 更安全:安全问题可以在24小时内修复;4) 更稳定:经过亿级用户的使用考验,CRASH率低于0.15%;5) 兼容好:无系统内核的碎片化问题,更少的兼容性问题;6) 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能;7) 功能全:

2017-10-23 11:25:22 1403

原创 用数学思维实现雷达分析图

前言前段时间回看里约奥运会的国球比赛,岛国媒体给我龙队一个响亮的称号—— 六边形战士 !马龙是我的偶像,看到这样的称号当然很骄傲。分析图片可以知道:六个定点分别标识个技术点名称,对应 半径 所填充长度表示分值,龙队在各方面的分数都是满分,所以在雷达分析图上覆盖区全部填充。作为程序员的我,不免要从技术实现的角度思考问题,接下来我们一起造轮子:先上效果图:设计思路大致的思路是这样的,我们需要自定义属性

2017-10-21 13:48:27 3842

原创 安卓中相机相册调用总结

最终效果图界面很简单,两个Button一个imageView。1.先看下点击拍照,因为6.0以上安卓增加了权限管理,我们这里我先做了一个权限申请://检查权限(6.0以上做权限判断)if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (mPermissionsChecker.lacksPermissions(PERMIS

2017-10-20 15:48:53 1231

原创 阿里发布的规约插件使用指南

一、前言10月14日,阿里巴巴在杭州云栖大会上,正式发布了由阿里巴巴 P3C 项目组,经过 247 天的持续研发,正式发布众所期待的 《阿里巴巴 Java 开发规约》的扫描插件!把《阿里巴巴 Java 开发规约》强制条目转化自动插件,并实现部分的自动编码。该插件已经在 Github 上开源,有兴趣的可以直接去看看。 github.com/alibaba/p3c 或者在Github直接搜索p

2017-10-16 10:49:32 2106

原创 RxJava从入门到不离不弃(五)——Scheduler调度

前言完整代码,请查看我的github:https://github.com/shuaijia/LiveLike,喜欢的话就给点个赞喽^_^视频直播想必大家都不谋生,从2015年左右开始,视频直播开始大量普及,市面上的大中型APP基本上都有直播功能,比如专做直播的斗鱼、花椒等。大家都可能看过别人直播甚至参与过直播,那么对精彩的内容总忍不住点赞、送礼物!那作为开发的我们,总是以技术的角度看待世界,看到酷

2017-10-13 17:56:12 1383

原创 Android环境搭建

本文章适用于Windows用户。Android Studio 使用java编译环境构建,因此在开始使用Android Studio之前你需要确保你已经安装Java开发工具包(JDK)。如果你是一个经验丰富Android或Java开发人员的话,你很有可能已经在你的电脑上安装了JDK。因此,我们这篇文章将从JDK和AndroidStudio两个方面来讲解Android开发环境的搭建。jdk的安装与配置第

2017-10-13 14:41:04 243

原创 银联无跳转支付流程(银联侧开通)

2017-10-10 15:45:23 5521 2

空空如也

空空如也

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

TA关注的人

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