自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

每一个你不满意的现在,都有一个你没有努力的曾经。

  • 博客(62)
  • 资源 (19)
  • 收藏
  • 关注

原创 Android 解决TextView设置文本和富文本SpannableString自动换行留空白问题

TextView设置文本和富文本换行留白问题效果图对比解决方案效果图对比下面是设置普通文本的效果对比图: 下面是设置富文本的效果对比图: 解决方案重新测量文字宽度,设置换行: private void initAutoSplitTextView() { mTv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

2021-01-18 00:05:36 53

原创 最简单易懂的设计模式——建造者模式

最简单易懂的设计模式之建造者模式建造者模式定义实现方式优点:缺点:建造者模式定义建造型模式用于创建过程稳定,但配置多变的对象。定义是:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。实现方式经典的「建造者-指挥者」模式现在已经不太常用了,现在建造者模式主要用来通过链式调用生成不同的配置。比如我们要制作一杯奶茶。它的制作过程是稳定的,除了必须要知道奶茶的种类和规格外,是否加珍珠和是否加冰是可选的。使用建造者模式代码如下:public class MilkTea {

2020-12-02 23:28:49 24

原创 最简单易懂的设计模式——工厂模式

最简单易懂的设计模式之工厂模式工厂模式前言简单工厂模式工厂方法模式抽象工厂模式工厂模式前言在编程中,构建对象最常用的方式是 new 一个对象。其实构建过程可以被封装起来,工厂模式便是用于封装对象的设计模式。简单工厂模式比如,直接 new 对象的方式相当于当我们需要一个苹果时,我们需要知道苹果的构造方法,需要一个梨子时,需要知道梨子的构造方法。更好的实现方式是有一个水果工厂,我们告诉工厂需要什么种类的水果,水果工厂将我们需要的水果制造出来给我们就可以了。这样我们就无需知道苹果、梨子是怎么种出来的,只

2020-12-02 00:46:09 26

原创 Android自定义View仿QQ计步器

自定义View仿QQ计步器欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用

2020-11-01 02:15:01 40

原创 Android多线程——线程池ThreadPoolExecutor详解及使用

Android线程池详解前言ThreadPoolExecutor线程池的分类FixedThreadPoolCachedThreadPoolScheduledThreadPoolSingleThreadExecutor基本使用前言在开发中经常会使用到线程来进行异步操作,但是每个线程的创建和销毁都需要一定的开销。所以就需要线程池来对线程进行管理。Android中的线程池来源于Java中的Execu...

2019-04-30 01:10:49 807

原创 Android EventBus 3.1.1最新源码分析

EventBus 3.1.1源码分析前言EventBus构造方法订阅者注册查找订阅者方法注册过程发送事件订阅者取消注册前言EventBus 是一款在 Android 开发中经常使用的发布/订阅事件总线框架,将事件的接收者和发送者分开;简化了组件之间的通信,使用简单、效率高、体积小!由于经常使用到,所以我们深入理解该框架的原理就很有必要了,下面我们就来分析一下EventBus原理。EventB...

2019-04-25 00:44:47 683

原创 Android异步任务AsyncTask原理(基于Android9.0)

AsyncTask原理前言AsyncTask介绍源码分析前言在Android开发中经常会通过线程去执行耗时的任务,并且在任务执行完之后通常会用到Handler来更新UI。虽然实现简单,但是有多个任务同时执行时则会显得代码很臃肿。Android提供了AsyncTask,它使得异步任务实现起来更加简单,代码更简洁。AsyncTask介绍AsyncTask是一个抽象的泛型类,它有3个泛型参数,分...

2019-04-15 01:09:44 660

原创 Android集合SparseArray的使用及源码解析

SparseArray使用及原理分析使用方法原理分析1.构造方法2.其他方法2.1 append方法2.2 put方法2.3 ContainerHelpers.binarySearch方法(二分查找)2.4 get方法2.5 gc方法优缺点和应用场景1.优点2.缺点3.应用场景使用方法SparseArray源码来自:android-28 android.util.SparseArray首...

2019-04-10 00:26:50 215

原创 最简单易懂的设计模式——观察者模式

观察者模式定义结构图:角色定义:代码实现使用场景优缺点定义观察者模式又被称为发布-订阅模式,属于行为型设计模式的一种。定义:定义对象间一种一对多的依赖关系,每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。结构图:角色定义:1、 Subject:抽象主题(抽象被观察者)。抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者。抽象主题提...

2019-04-02 21:58:23 177

原创 最简单易懂的设计模式——单例模式

定义Java中单例模式定义:“一个类有且仅有一个实例,并且自行实例化向整个系统提供。”写法1.饿汉式public class Singleton { private static Singleton instance = new Singleton(); public Singleton() { } public static Singleton ge...

2019-03-10 20:46:35 137

原创 最新的在原生Android应用中集成ReactNative

集成到现有原生应用把 React Native 组件集成到 Android 应用中有如下几个主要步骤:开发环境准备第一步:引入react-native第二步:添加react和react native模块第三步:添加ReactNative依赖第四步:在package.json文件中的scripts里面配置启动脚本1.创建一个index.js文件2. 添加你自己的 React Native 代码3.配...

2019-03-06 22:35:05 961 1

原创 Win10Git闪退和SourceTree提示未找到Git有效的解决方案

问题Win10 64位专业版安装git 2.x之后出现 Git闪退,安装1.x出现bash: /dev/null: No such device or address fatal: open /dev/null or dup failed: No such file or directory 错误,然后换了SourceTree,使用其自带的Git但一直提示找不到Git。网上解决办法:以...

2018-07-11 22:48:15 3491

原创 解决Android 8.0 WebView回退失效(判断canGoBack()和调用goBack())

前言最新开发项目使用WebView的时候发现华为手机判断是否能回退(canGoBack)的时候失效了,无论打开多少层网页,点击返回按钮都会关闭Activity,一开始以为是华为手机的问题,然后用其他版本高一点的手机测试也是一样(8.0版本),查阅了官方文档才知道是sdk的问题。问题Android 8.0开始WebView的shouldOverrideUrlLoading(WebView...

2018-04-23 23:38:23 5467 3

原创 Android开发中Html.fromHtml(String source)方法过时的替代方法

前言我们在开发中难免会遇到一个字符串中有不同颜色的字体或者有不同大小的字体这样的需求,所以可能会用到Html.fromHtml(String source) ,代码如下:String str2 = "今天<font color='#FF0000'><small>天气不错</small></font>";tv2.setText(Html.fr...

2018-04-23 23:23:19 6165 1

原创 解决华为手机USB调试app闪退重启界面清空log日志问题

机型:华为mate10手机开发环境:Android studio 3.0开发app的时候,出现问题,闪退,去控制台找错误日志,看log的输出,结果一秒闪过,什么都没有.网上搜了半天,顺便记录:进入拨号界面输入:* #* #2846579#* # *依次选择:后台设置—LOG设置—AP 日志重新启动手机ps:没有用.重启手机后LOG设置—-ap日志又默认关闭了,不重启会打...

2018-03-16 10:28:10 5019 2

原创 Android仿新浪微博首页加号弹出菜单效果

前言最近公司项目需求要做一个类似微博的弹出动画,参照网上的资料和自己的修改实现了效果。先上图: 一、实现思路:1、截取当前窗口,对图片做高斯模糊处理,将处理后的图片做popupwindow的背景图片; 2、创建popupwindow,完成布局,View的移动范围是由父布局的大小决定的,就是只能在父布局的范围内移动; 3、给每个View添加进入动画,和退出动画,做延时;

2018-01-06 12:50:54 5112 1

原创 Android Studio3.0中dependencies依赖由compile变为implementation的区别

前言Android Studio版本更新至3.0了,更新后,连带着com.android.tools.build:gradle 工具也升级到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作为gradle的编译版本,该版本gradle编译速度有所加速,更加欣喜的是,完全支持Java8。当然,对于Kotlin的支持,在这个版本也有所体现,Kotlin插件默认是安装的。一、依赖变

2017-12-06 21:53:52 9998 3

原创 解决Android项目Gradle's dependency cache may be corrupt问题

分析Android Studio更新后,各种配置工具也跟着更新。更新后导入工程时(使用Android工程编译或者导入新的工程没有对应的gradle版本)出现如下问题。Error:Failed to open zip file. Gradle’s dependency cache may be corrupt (this sometimes occurs after a network conne

2017-11-30 22:05:33 627

原创 Android中使用SVG实现炫酷动画效果

前言SVG,即Scalable Vector Graphics 可伸缩矢量图形。这种图像格式在前端中已经使用的非常广泛,而在移动端的开发中,遇到一些复杂的自定义控件或者动画效果,我们就可以考虑使用SVG。一.Vector Drawable1.1 矢量图与位图1.矢量图像:SVG是W3C 推出的一种开放标准的文本式矢量图形描述语言,他是基于XML的专门为网络而设计的图像格式 SVG是一种采用XML来

2017-11-27 23:42:06 2152

原创 Android Studio将不见的工具栏重新设置回来

前段时间更新了Android Studio,然后发现之前的工具栏消失了,变成了下图的样子,使用起来很不习惯经过一番查找,终于找到了设置回来的方法:1.单击菜单栏中,view选项,会出现下图:2.然后选中ToolBar选项,单击:最后Studio中工具栏重新出现了

2017-11-27 11:29:28 9932 1

原创 Android约束布局ConstraintLayout 项目实战攻略

前言ConstraintLayout即约束布局, 在2016年由Google I/O推出. 从支持力度而言, 将成为主流布局样式, 完全代替其他布局, 减少布局的层级, 优化渲染性能. 且自AS2.3起创建新的Activity,默认的layout根布局就是ConstraintLayout。说实话这篇文章写的算是比较晚了,距离ConstraintLayout出现至今已经有一年了,所以再不学习就真的晚了

2017-11-21 15:05:40 3006

原创 Android中常见的内存泄漏问题及解决办法

在android开发中,内存泄漏是比较常见的问题,但为什么会出现内存泄漏呢?当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了。 内存泄漏有什么影响呢?它是造成应用程序OOM的主要原因之一。由于android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏

2017-10-30 16:05:27 456

原创 Android中WebView与HTML+Javascript的交互

在现在的Android开发中,很多的商业项目特别是电商项目使用了Android原生控件与WebView进行混合开发,当然不仅仅就是显示一个WebView那么简单,有时候还需要本地Java代码与HTML中的Javascript进行交互,这篇博客给大家介绍下如何实现Android与HTML+JS的交互。效果图:1、Android 调用HTML中的javascript脚本实现Android调用JS脚本是非

2017-10-18 22:30:28 714

原创 众里寻它千百度——ButterKnife源码完全解析

一、概述在很久很久之前,自从朋友推荐我用butterknife后, 从此的项目再也离不开butterknife了。问butterknife的原理,估计很多人都会回答注解加反射。我一开始也是以为是注解加反射,然而看了源码之后发现不是用的注解加反射。那么下面我们就来分析一下ButterKnife的实现原理吧。本文基于ButterKnife8.6.0.二、ButterKnife用法做andr

2017-09-08 21:42:36 3365 2

原创 深入理解Java虚拟机——JVM性能优化

一、性能监控当开发或运行一个Java应用的时候,对JVM的性能进行监控是很重要的。配置JVM不是一次配置就万事大吉的,特别是你要应对的是Java服务器应用的情况。你必须持续的检查堆内存和非堆内存的分配和使用情况,线程数的创建情况和内存中加载的类的数据情况等。这些都是核心参数。使用Anturis控制台,你可以为任何的硬件组件上运行的JVM配置监控(例如,在一台电脑上运行的一个Tomcat网页服务器)。

2017-09-07 16:16:02 5026 2

原创 深入理解Java虚拟机——JVM类加载机制(类加载过程和类加载器)

一、什么是类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准(Preparation)、解析(Resolution)、初始化(Initial

2017-09-07 00:47:24 2978

原创 深入理解Java虚拟机——JVM、DVM(dalvik)和ART之间的区别

一、Dalvik介绍Dalvik VM是Android平台的核心组成部分之一,它的名字来源于冰岛一个名为Dalvik的小渔村。Dalvik VM并不是一个Java虚拟机,它没有遵循Java虚拟机规范,不能直接执行Java的Class文件,使用的是寄存器架构而不是JVM中常见的栈架构。但是它与Java又有着千丝万缕的联系,它执行的dex(Dalvik Executable)文件可以通过Class文件转

2017-09-06 23:56:22 9113 6

原创 深入理解Java虚拟机——JVM的内存结构和内存分配策略

一、JVM内存模型Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。根据《Java虚拟机规范(JavaSE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域:1、程序计数器程序计数器(Program Counte

2017-09-06 23:30:56 1098

原创 深入理解Java虚拟机——JVM垃圾回收机制和垃圾收集器详解

一:概述说起垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联系起来。在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,顾名思义,垃圾回收就是释放垃圾占用的空间,这一切都交给了JVM来处理。本文主要解答三个问题:1、哪些内存需要回收?(哪些对象可以被看做是”垃圾“) 2、如何回收?(常用的垃圾回收算法) 3、使用什么工具回收?(垃圾收集器)二

2017-09-06 17:50:32 2754 3

原创 浅谈Android开发中的MVVM模式及与MVP和MVC的区别

三种架构模式的演化:什么是MVVM?MVVM是Model-View-ViewModel的简写。微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTe

2017-09-05 11:36:58 1441

原创 RecyclerView实现顶部悬浮、字母排序、过滤搜索最优雅的方式

效果: 这篇文章算是之前一篇的升级版,在上一篇的基础上新增了顶部悬停功能、波浪侧边栏和关于多音字的一个处理。 上一篇链接 : 《Android 使用RecyclerView实现(仿微信)的联系人A-Z字母排序和过滤搜索功能》 http://blog.csdn.net/silenceoo/article/details/75661590主界面布局代码:<?xml version="1.0"

2017-09-04 17:24:19 11618 14

原创 Android各种学习资料(Rxjava、动画、UI效果、开源库、算法、面试)资源链接

Android开源项目配套资料视频:https://github.com/open-android/Android20多个可以提高你安卓开发技能的开源app :http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2017/0214/7114.html 开源项目分析:http://www.codekk.com/open-source-proj

2017-08-31 13:14:03 1124

原创 六个实例教你正确使用Java内部类(成员内部类、匿名内部类、静态内部类、局部内部类)

内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构1234567891011121314151617181920212

2017-08-31 12:58:33 899 1

原创 想知道支付宝(Android版)使用了哪些开源项目?

支付宝是一个什么产品相信大家都是知道的,不用多说。下边是支付宝 Android 客户端使用的开源组件,在这里跟大家分享一下。项目名称项目介绍github仓库地址FFmpegFFmpeg一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序https://github.com/FFmpeg/FFmpegachartengine一个图表库,现在Android上用的较多的是

2017-08-30 12:49:37 1822

原创 最简单易懂的RxJava2.0学习教程之RxJava2的线程调度(二)

一、RxJava2线程调度使用RxJava的时候,在没有切换线程的情况下, 上游(observable)和下游(observer)是工作在同一个线程中的,即都在主线程中。话不多说上代码:Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer>() { @Overr

2017-08-29 17:49:36 4054

原创 最简单易懂的RxJava2.0学习教程之RxJava2的基本使用(一)

去年RxJava2就发布了,在这之后一直做项目都在使用Rxjava2,觉得特别好用,目前网上的的资料很多,对于以前使用过RxJava1的朋友来说只需要看看更新文档就知道怎么使用了,但还有一些以前没用过RxJava的朋友可能就不知道怎么办了,不知道该看RxJava1还是直接学习RxJava2。如果你以前学过RxJava1,那么对于RxJava2只需要看看更新了哪些东西就行了,RxJava2相对于RxJ

2017-08-29 13:58:38 3457 7

原创 Android手动编写ButterKnife编译时注解框架

我们在项目中经常使用ButterKnife注解等框架,那里面的实现原理是什么呢?其实内部原理比较简单,今天就跟大家一起分享一下。先上效果:这就是我用自己写的编译时注解框架实现的效果。MainActivity代码: Button btn1; @InjectView(R.id.btn2) Button btn2; @Override protected void on

2017-08-27 13:42:40 591 1

原创 5分钟帮你打造一个快速启动的app(app启动分析与优化)

一、启动方式:(1)冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。冷启动因为系统会重新创建一个新的进程分配给它,所以会先创建和初始化Application类,再创建和初始化MainActivity类(包括一系列的测量、布局、绘制),最后显示在界面上。(2)热启动当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然

2017-08-26 16:02:33 933 1

原创 Android Studio打包签名 Signature Versions V1、V2的选择问题

最近Android Studio 打包的时候发现多了个签名版本V1和V2的选择:如下图:开始默认勾选的v2(Full APK Signature),在测试机上(5.0)一直都安装失败,后来发现和签名选择V1和V2有关系。官方解释:V1:通过ZIP条目进行验证,这样APK 签署后可进行许多修改,可以移动甚至重新压缩文件。 V2:验证压缩文件的所有字节,而不是单个 ZIP 条目,因此,在签名后无法再更

2017-08-25 11:22:44 4347

原创 最完整的Windows下React Native开发环境搭建与第一个程序HelloWorld

目前网上关于React Native的教程很多,官方文档写的也很好,但是感觉大部分教程写的不是很清楚,导致我跟着教程一步一步下来发现各种问题。因此我来分享一下我解决问题和搭建环境的过程。一、配置React Native环境首先要安装Chocolatey,是一个Windows上的包管理器,类似于linux上的yum和 apt-get,安装了Chocolatey就可以通过命令行来安装一些我们需要软件。具

2017-08-24 02:14:40 1813

android自定义星星评分控件

android自定义星星评分控件

2017-06-28

android自定义View仿QQ计步器

android自定义View仿QQ计步器 android自定义View仿QQ计步器 android自定义View仿QQ计步器 android自定义View仿QQ计步器

2020-11-01

最新的在原生Android应用中集成ReactNative

最新的在原生Android应用中集成ReactNative

2019-03-06

Android仿新浪微博首页加号弹出菜单效果

Android仿新浪微博首页加号弹出菜单效果 Android仿新浪微博首页加号弹出菜单效果

2018-01-06

Android中使用SVG实现炫酷动画效果

Android中使用SVG实现炫酷动画效果Android中使用SVG实现炫酷动画效果

2017-11-27

Android约束布局ConstraintLayout使用完全解析

Android约束布局ConstraintLayout使用完全解析 Android约束布局ConstraintLayout使用完全解析

2017-11-21

Android中WebView与HTML+Javascript的交互

Android中WebView与HTML+Javascript的交互 Android中WebView与HTML+Javascript的交互

2017-10-18

《深入理解Java虚拟机:JVM高级特性与最佳实践 》第2版 PDF高清完整版

《深入理解Java虚拟机:JVM高级特性与最佳实践 》第2版 PDF高清完整版 《深入理解Java虚拟机:JVM高级特性与最佳实践 》第2版 PDF高清完整版 《深入理解Java虚拟机:JVM高级特性与最佳实践 》第2版 PDF高清完整版

2017-09-06

基于Rxjava2的事件总线:Rxbus

基于Rxjava2的事件总线:Rxbus 基于Rxjava2的事件总线:Rxbus 基于Rxjava2的事件总线:Rxbus 基于Rxjava2的事件总线:Rxbus

2017-09-01

最简单易懂的RxJava2.0学习教程之RxJava2的线程调度(二)

最简单易懂的RxJava2.0学习教程之RxJava2的线程调度

2017-08-29

最简单易懂的RxJava2学习教程(一)

RxJava2学习demo

2017-08-29

android手动编写ButterKnife编译时注解框架

android手动编写ButterKnife编译时注解框架

2017-08-27

Android 一个TextView中设置文字不同字体大小和颜色的最完整方法

Android 一个TextView中设置文字不同字体大小和颜色的最完整方法

2017-08-15

Android 一个TextView中设置不同字体大小和颜色

Android 一个TextView中设置不同字体大小和颜色

2017-08-15

基于RxJava2的RxBus使用

基于RxJava2的RxBus使用

2017-07-27

Recyclerview由于ViewHolder的复用显示错乱问题解决

Recyclerview由于ViewHolder的复用显示错乱问题解决

2017-07-20

Android Studio中使用kotlin开发项目

安卓中使用kotlin开发项目

2017-07-14

ExpandableListView实现Android购物车

Android购物车

2017-07-05

择色-拾色器

择色器

2017-06-28

空空如也

空空如也

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

TA关注的人 TA的粉丝

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