自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Android RecyclerView刷新和加载

在上一章中,我们了解了RecyclerView控件的基本用法,这里我们将实现RecyclerView的刷新和加载。 我们可以利用SwipeRefreshLayout控件来实现下拉刷新,详见Android SwipeRefreshLayout控件,也可以自己定义。 1. 自定义下拉刷新 我们首先创建...

2020-06-19 16:01:09 44 0

原创 Android RecyclerView控件

1. RecyclerView RecyclerView是5.0版本出现的控件,用来替代传统的ListView,更加强大和灵活。需要添加Design依赖库,并且使用Theme.AppCompat主题。 <?xml version="1.0" encoding="...

2020-06-18 17:07:54 31 0

原创 Android SwipeRefreshLayout控件

1. SwipeRefreshLayout用法 SwipeRefreshLayout是一个很好的下拉刷新控件。 首先需要在布局文件中,把RecyclerView放在SwipeRefreshLayout里面 <?xml version="1.0" encoding=&quo...

2020-06-12 14:29:24 86 0

转载 FlatBuffers在android的使用简介

mac环境上编辑器flatc生成 参考http://blog.csdn.net/yxz329130952/article/details/50706369 下载flatbuffers的源码,解压 homebrew下载安装cmake cd到flatbuffers的源码文件夹 开始编译...

2020-06-11 15:16:46 58 0

转载 Android ProGuard技术详解

一. 简介 ProGuard是一个开源的Java代码混淆器,在Android中一提起ProGuard,我们通常第一想到的是用来混淆代码的,其实它的功能并不仅限于此,有以下四个功能: (1)压缩(Shrink):侦测并移除代码中无用的类、字段、方法和特性 (2)优化(Optimize):对字节码进行...

2020-06-10 14:23:00 100 0

原创 Android ViewDragHelper类

ViewDragHelper是个工具类,用来辅助ViewGroup内控件的操作和拖拽。 1. ViewDragHelper创建 ViewDragHelper通过静态方法create()创建, public static ViewDragHelper create(ViewGroup forPare...

2020-06-09 17:16:44 50 0

原创 Android ParagraphStyle应用

ParagraphStyle主要用于段落级别的文本格式化。 1. LeadingMarginSpan LeadingMarginSpan可以设置行的缩进。 LeadingMarginSpan.Standard(int first, int rest),first设置首行缩进,rest设置其他行的...

2020-05-27 11:02:49 102 0

转载 JVM参数设置

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程...

2020-05-21 16:07:45 64 0

转载 Java 多线程设计模式

多线程程序的评量标准 安全性:不损坏对象 不安全是指,对象的状态处于非预期状态,比如账户余额变成了负值 生存性:进行必要的处理 生存性是指:程序能正常运行,可进行必要的处理,影响生存性的典型问题有出现死锁 复用性:可再利用类 复用性是指代码重用,若复用性好,可减少大量重复代码 性能...

2020-05-11 16:07:09 48 0

转载 Java JDK1.8新特性

一、接口的默认方法 Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法 interface Formula { double calculate(int a); default double sqrt(int a) { ...

2020-05-08 10:23:28 93 0

原创 Android Kotlin(七) Lambda表达式

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 Lambda表达式,也可称为匿名函数。以箭头操作符->将表达式拆分成两部分 // 没有参数 var f1 = { -> println("in f1")} // ...

2020-04-15 17:47:47 49 0

原创 Android Kotlin(六) 扩展和委托

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 1. 扩展 1.1 类成员扩展 扩展可以向类中添加成员。为Long添加一个format方法,用于时间戳格式化输出。 fun Long.format(): String { return S...

2020-04-03 17:03:05 51 0

原创 Android Kotlin(五) 对象

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 在Java中,有一个匿名类的概念,在Kotlin中,也有类似的功能,就是对象。 1. 对象 建立一个对象,需要使用object关键字,该对象要继承的类需要与object之间用冒号(:)分隔。 op...

2020-03-11 16:14:05 38 0

原创 Android Kotlin(四) 泛型

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 1. 泛型 所谓泛型,就是指在定义数据结构时,只指定类型的占位符,待到使用该数据结构时再指定具体的数据类型。 定义泛型类型变量,可以完整地写明类型参数,如果编译器可以自动推定类型参数,也可以省略类...

2020-02-26 20:17:28 79 0

原创 Android Kotlin(三) 枚举类、数据类和封闭类

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 1. 枚举类 在kotlin中,枚举以类的形式存在。枚举有name和ordinal属性,用于获取枚举值名称和索引。通过valueOf()方法传入枚举值名称获取对应的数值。 enum class D...

2020-02-11 20:37:32 99 0

原创 Android Kotlin(二) 类和接口

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 1. 类 在kotlin中,类的声明使用class关键字。 class Shape { } 1.1 构造器 类允许定义一个主构造器和若干个第二构造。 主构造器是类头的一部分,紧跟...

2020-01-21 13:55:13 67 0

原创 Android Kotlin(一) 基础

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。 1. 定义变量和方法 定义变量 定义变量必须以var开头,定义常量以val开头 数据类型在变量后面,并且用冒号(:)分隔 定义变量时如果未初始化,必须指定数据类型。如果进行了初始化,...

2020-01-20 16:25:13 229 0

转载 Android Glide简单使用

Glide是谷歌为我们推荐的一个图片加载库。为什么要选择使用Glide呢? 1、代码有人维护,不至于出现问题,项目组都搞不定的时候问题无法解决。(ImageLoader已没人维护了) 2、代码简洁,可读性很好。(Fresco是一个非常优秀的库,但是配置稍显麻烦,同时代码风格读起来有些生疏) 3、...

2020-01-15 11:11:26 492 0

转载 JavaOpet

Android/Java 框架常常会使用编译期注解, 而其中关键的一步是如何生成 Java 文件. JavaPoet 就是用来生成 Java 代码的一个 Java Library. 基础概念 首先, 让我们来看一个简单的 Java 文件: 可以见, 一个 Java 文件由四部分组成。 也就是我们...

2020-01-14 16:29:38 72 0

转载 Java 反射

java反射主要从以下几个方面理解 理解Class类 理解Java的类加载机制 学会使用ClassLoader进行类加载 理解反射的机制 掌握Constructor、Method、Field类的用法 理解并掌握动态代理 1、理解Class类 Java程序在运行时,Java运行时系统一直对所有的...

2020-01-09 18:06:13 49 0

转载 Java ClassLoader

一、什么是ClassLoader 顾名思义,即是类加载器,具体作用就是将.class文件加载到JVM虚拟机中去,程序就可以正确运行了。 二、认识.class文件 Java是解释性语言,编写的代码都是.java文件,需要经过compile(编译)成.class文件才能运行。拿入门Hello Worl...

2020-01-09 14:21:58 32 0

转载 Android Volley完全解析

源码解析 说起分析源码,那么应该从哪儿开始看起呢?这就要回顾一下Volley的用法了,还记得吗,使用Volley的第一步,首先要调用Volley.newRequestQueue(context)方法来获取一个RequestQueue对象,那么我们自然要从这个方法开始看起了,代码如下所示: publ...

2020-01-07 17:37:10 27 0

转载 Android Volley使用解析

Volley简介 在2013年Google I/O大会上推出了一个新的网络通信框架Volley。Volley既可以访问网络取得数据,也可以加载图片,并且在性能方面也进行了大幅度的调整。 特点: 自动调度网络请求 支持多个并发的网络连接 支持请求优先级 可以取消单个或一系列请求 易于定制,如自定义...

2020-01-07 15:54:36 44 0

转载 Android OkHttp3架构分析

转载来源: https://www.jianshu.com/p/9deec36f2759 在OkHttp3中,其灵活性很大程度上体现在,可以intercept其任意一个环节,而这个优势便是okhttp3整个请求响应架构体系的精髓所在: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直...

2020-01-06 16:38:10 47 0

转载 Android Okhttp主流程源码分析

在OkHttp3中,其灵活性很大程度上体现在可以 intercept 其任意一个环节,而这个优势便是okhttp3整个请求响应架构体系的精髓所在,先放出一张主框架请求流程图,接着再分析源码。 String url = "http://wwww.baidu.com"; OkHtt...

2020-01-06 15:27:44 34 0

转载 Android Okhttp3基本使用

I.简介 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性: 支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接 连接池减少请求延时 透明的GZIP压缩减少响应数据的...

2020-01-06 14:45:36 932 0

转载 Android EventBus3.0源码解析

转载来源: http://liuwangshu.cn/application/eventbus/2-eventbus-sourcecode.html 前言 上一篇我们讲到了EventBus3.0的用法,这一篇我们来讲一下EventBus3.0的源码以及它的利与弊。 1.构造函数 当我们要调用Eve...

2020-01-06 09:07:42 23 0

转载 Android EventBus3.0用法全解析

前言 EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用...

2020-01-03 18:13:39 602 0

原创 Android 运行时动态申请权限

从Android6.0开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。同时系统默认为targetSdkVersion小于23的应用授予了所申请的所有权限。 系统权限 系统权限分为两类:正常权限和危险权限 正常权限不会直接给用户隐私权带来风险。如果您的应用在其清单中列出了正常权限,...

2020-01-03 08:58:27 53 0

原创 Android AsyncQueryHandler类

AsyncQueryHandler是用于ContentProvider上执行异步的CRUD操作。 1. AsyncQueryHandler类 AsyncQueryHandler类继承Handler类,通过封装ContentResolver来实现对ContentProvider的异步操作。 publ...

2020-01-03 08:44:17 57 0

转载 Android CoordinatorLayout之源码解析

源码基于com.android.support:design:26.1.0,不同版本可能有所差异。 一、开始 上一篇Android CoordinatorLayout之自定义Behavior中,我们简单介绍了CoordinatorLayout以及如何自定义Behavior。所以这次我们从源码的角...

2020-01-02 16:19:01 54 0

转载 Android CoordinatorLayout之自定义Behavior

一、认识CoordinatorLayout CoordinatorLayout作为support:design库里的核心控件,在它出现之前,要实现View之间嵌套滑动等交互操作可不是件容易的事,复杂、难度大,基本绕不开View的事件机制,CoordinatorLayout很大程度上解决了这个痛点,...

2020-01-02 15:14:49 62 0

原创 Android NavigationView控件

NavigationView帮助我们实现抽屉菜单界面,所有的东西都放在一个DrawerLayout中。 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.Dr...

2020-01-02 13:01:42 57 0

原创 Android ConstraintLayout布局

前言 ConstraintLayout约束布局, 与RelativeLayout有点类似。需要添加依赖 dependencies { ... ... implementation 'com.android.support.constraint:constraint-la...

2020-01-02 12:25:22 132 0

转载 Android LeakCanary原理分析

概述 在上一篇LeakCanary使用详细教程中,我们熟悉了LeakCanary的使用和初步描述了它的工作机制,这篇我准备从源码的角度去分析LeakCanary的工作原理; 源码分析 从上一篇中我们知道,LeakCanary在Appaction的初始化方式: @Override public vo...

2020-01-02 09:55:41 116 0

转载 Android LeakCanary使用详细教程

导语 在Android的性能优化中,内存优化是必不可少的点,而内存优化最重要的一点就是解决内存泄漏的问题,在Android的内存泄漏分析工具也不少,比如PC端的有:AndroidStudio自带的Android Profiler、MAT等工具;手机端也有,就是我们今天要介绍的LeakCanary...

2020-01-02 09:17:36 355 0

原创 Java Crash捕捉

JVM为我们提供了线程的未捕获异常处理机制,通过Thread的setUncaughtExceptionHandler(UncaughtExceptionHandler)方法 public void setUncaughtExceptionHandler(UncaughtExceptionHandl...

2019-12-25 14:21:54 49 0

转载 Android中使用AbstractProcessor在编译时生成代码

1. 概述 在现阶段的Android开发中,注解越来越流行起来,比如ButterKnife,Retrofit,Dragger,EventBus等等都选择使用注解来配置。按照处理时期,注解又分为两种类型,一种是运行时注解,另一种是编译时注解,运行时注解由于性能问题被一些人所诟病。编译时注解的核心依赖...

2019-12-24 16:58:54 71 0

原创 Java Plug-in(十一) 创建RCP项目

首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。 1. 创建RCP项目 在Eclipse里,依次选择【File】->【New】->【Project】,选择【Plugin-in Project】选项。 在【Project name】中...

2019-12-09 09:36:56 62 0

原创 Java Plug-in(十) 自定义扩展点

首先申明下,本文为笔者学习《Eclipse插件开发学习笔记》的笔记,并加入笔者自己的理解和归纳总结。 1. 自定义扩展点 在【Extension Points】中添加一个自定义扩展点【userExtensionInfo】。 生成的扩展点一般是包名 + "Extension Poing I...

2019-12-06 18:11:01 34 0

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