自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SimpleDraweeView 动态设置宽高

private void showView(ViewHolder holder, final ReaderComicBitmapBean.EpisodesBean.EpisodePictureBean readerItemData) { String imageURI = rea...

2020-07-01 10:29:25 40 0

原创 沉浸式开发

//沉浸式状态栏 (状态栏需要显示,但是不占位) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

2020-06-30 17:16:49 26 0

原创 Rxjava的基本总结

知识问答: Observable和Flowable 的区别? Observable不支持背压,而Flowable支持背压 Single和Completable的区别? 如果你使用一个单一连续事件流,即只有一个onNext事件,接着就触发onComplete或者onError,这样你...

2020-05-25 18:05:45 33 0

原创 Freocso的使用

Fresco库报告 介绍 Fresco 是一个强大的图片加载组件。使用它之后,你不需要再去关心图片的加载和显示这些繁琐的事情! 支持 Android 2.3 及以后的版本。 Image Pipeline(管道) Fresco 中设计有一个叫做Image Pipeline的模块。它负责从...

2020-04-07 13:13:18 42 0

原创 android studio查看依赖关系

2020-03-18 15:25:18 34 0

原创 建造者模式

public class PingbackModuleNew { private HashMap<String, String> mMap = new HashMap<>(); public Builder newBuilder() ...

2020-01-08 14:25:45 33 0

原创 android - Room的使用教程

room的集成 添加依赖 api 'androidx.room:room-runtime:2.2.3' annotationProcessor 'androidx.room:room-compiler:2.2.3' 第一步:首先创建一个表结构: ...

2019-12-20 15:32:00 109 0

原创 android 获取html标签中的内容

当我们通过webView加载一个h5页面的时候,需要获取h5页面的标签内容时候,我们需要js的工作。 webview.getSettings().setJavaScriptEnabled(true); //启动js webview.addJavascriptInterface(new InJa...

2019-12-18 09:52:27 267 0

原创 网络日志打印处理

第一步:引入Logger api 'com.orhanobut:logger:2.1.1' 然后在application中添加初始化工作 Logger.addLogAdapter(new AndroidLogAdapter()); 第二步:在okhttp中添加拦截机...

2019-12-09 14:54:00 38 0

原创 Toast的工具类

/** * Created by malei on 2019-12-03 * Describe:toast 弹出,每次只会弹一个,将上一个取消 */ public class ToastUtil { private static SoftReference<Toast>...

2019-12-09 10:38:10 30 0

原创 Dialog的统一管理

首先我们需要创建一个基类Dialog,方便子dialog进行统一集成 package com.example.commonlib.dialog; import android.annotation.SuppressLint; import android.app.Dialog; impor...

2019-12-09 10:06:58 65 0

原创 适配8.0的Notifaction

public class NotificationHelper { private static final String CHANNEL_ID = "qy_channel_id"; //通道渠道id private static final String ...

2019-12-05 15:37:59 34 0

原创 对URI进行切割处理办法

//这个方法可以将uri中的参数,保存到bundle中 private void gotoComicScheme(Uri uri) { try { Bundle bundle = new Bundle(); Set&l...

2019-11-29 17:45:08 63 0

原创 as 快捷键

快捷键: 1)抽取成方法:⌘⌥M 2)去除无效引用:^⌥O 3)格式化代码:⌘⌥L 4)历史打开过的文件:⌘E 5)查找与替换:⌘F,⌘R 6)大小写转换:⌘⇧U 7)复制整行:⌘D 8)删除整行:⌘⌫ 9)查找类 :Command + O 10)全局搜索:Command + ...

2019-11-25 09:46:40 37 0

原创 基于SpringBoot开发个人博客 ---首页搭建index.html

前端开发环境: ide工具:WebStorm ui插件:Semantic UI 基于SpringBoot开发个人博客第一步:下载前端开发工具 WebStorm :http://www.jetbrains.com/webstorm/download/download-thanks.html 第二...

2019-11-17 13:46:31 163 0

原创 Mac-as-flutter环境配置

第一步下载代码:git clone -b beta https://github.com/flutter/flutter.git 第二步配置路径在 .bash_profile 下 如果没有该文件就创建:touch .bash_profile 在打开该文件:open .bash_profile...

2019-11-13 16:10:39 100 0

原创 MultiTypeAdapter 复杂的列表视图解决方案

1.集成 implementation 'me.drakeet.multitype:multitype:3.3.0' 2.简单布局示例 使用MultiTypeAdapter 是没有适配器的,我们直接继承 ItemViewBinder这个类,在其中处理布局和数据的填充工作...

2019-11-04 16:43:06 321 0

原创 moduleProject needs to be converted to androidx.* dependencies

在创建module时,由于studio版本过高导致出现Project needs to be converted to androidx.* dependencies的问题。提供以下解决方案: 方法一:把整个项目升级到AndroidX 方法二:项目不升级到AndroidX 步骤一:gradle.p...

2019-11-04 10:08:35 7310 2

原创 项目改造 -- 多个module放在一个目录下

1)工程目录下新建librarys包 2)将moudle移动到librarys包下 3)修改工程目录下的settings.gradle,添加 include ':app',':librarys:imageurl'//原来的应该为 include &#...

2019-11-01 18:47:55 67 0

原创 git 的使用

第一步:我们需要设置账号的姓名和邮政号: $ git config --global user.name"xxx" $ git config --global user.email "xxxx@163.com" 第二步:执行生成公钥和私钥的命令:ss...

2019-10-18 23:39:36 30 0

原创 View的绘制流程

handleLaunchActivity方法开始分析,首先加载Activity的字节码文件,利用反射的方式创建一个Activity对象,调用Activity对象的attach方法,在attach方法中,创建系统需要的Window并为设置回调,这个回调定义在Window之中,由Activity实现,...

2019-10-13 23:25:03 30 0

原创 动态代理

概述 : Spring 框架有一个技术, 叫做 AOP 技术. (面向切面编程) 效果 : 拦截被调用对象的所有方法. 实现类完成 接口定义 : public interface SuperStar { void sing(int money); void liv...

2019-10-03 17:36:50 30 0

原创 Retrofit源码解析

目录 引入框架 使用retrofit 源码解析 同步请求 面试题部分: 引入框架 implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com....

2019-10-03 14:57:27 18 0

原创 Okhttp的请求和结果拦截打印

public class RequestInterceptor implements Interceptor { private static final String TAG =""; @Override public Response inter...

2019-09-19 14:44:25 47 0

原创 Chars无法拦截请求问题

Client SSL handshake failed - Remote host closed connection during handshake 这个是因为SSL需要证书; 1.在项目res目录下新增一个文件夹,命名xml,并且新建一个xml文件,可以命名为network_securi...

2019-09-19 11:38:15 58 0

原创 Dragger.android的使用

Dagger2特别提供了一个针对 Android 使用的简化流程。 1.给你的Activity 写一个 Subcomponent,应引用所需的 Module @Subcomponent(modules = NetModule.class) public interface MainActiv...

2019-09-11 17:37:07 67 0

原创 dagger2使用

目录 1.基本使用(不带module) 2.简单使用(带moudle) 3.一个component多moudle 4.moudle之间依赖 1.基本使用(不带module) 首先我们需要一个component进行桥梁,将@Inject 的对象自动装入其中,然后提供给activity使用...

2019-09-09 17:21:05 78 0

原创 线程总结

一.创建线程的方式 1)实现Runable接口 Runable是一个接口,实现它,复写其中的run方法,就会执行内部任务。 2)继承Thread类 (实现了Runable接口) 继承Thread类,创建一个线程的原因是因为,它实现了Runable类。 3)实现Callable接口...

2019-08-30 15:09:51 27 0

原创 二叉树反转

TreeNode a = new TreeNode(2); a.left = new TreeNode(4); a.right = new TreeNode(6); a.left.left = new ...

2019-08-21 16:56:57 27 0

原创 二叉树反转

private TreeNode erchashu(TreeNode root) { TreeNode temp =root.left; root.left = erchashu(root.right); root.right = erchashu(...

2019-08-21 15:09:58 197 0

原创 冒泡排序

/** * 冒泡排序 * 比较两个相邻的元素,将值大的元素交换到右边 * * @param arr */ private void maopaoSort(int[] arr) { if (arr == null || arr...

2019-08-21 13:54:35 29 0

原创 打印质数

/** * 打印1-100质数 * 思路:将i从2进行递增,每次处于之前所有的数,判断是否取余为0 */ private void printZhushu() { List<Integer> list = new ArrayList...

2019-08-21 13:29:10 33 0

原创 快速排序

/** * 快速排序 * 思路:以数组的第一个值作为基准,首先从右到左,找到第一个小于基准的值,然后在从左到右,找到第一个大于基准的值,两个交换, * 然后就行左右移动,到相遇为止,将相遇位置的值跟基准交换,第一轮完成。这个时候,数组一分为二,左边是小于基准的,右边是...

2019-08-21 13:10:08 30 0

原创 TreeMap的源码

目录 元素结构TreeMapEntry 存放元素的逻辑 获取元素 元素结构TreeMapEntry static final class TreeMapEntry<K,V> implements Map.Entry<K,V> { K key; /...

2019-08-20 19:00:22 23 0

原创 HashMap的源码

目录 Node结构 数组结构 存放数据 get拿取数据 Node结构 HashMap中都是已Node对象作为元素存放的 static class Node<K,V> implements Map.Entry<K,V> { fina...

2019-08-20 15:13:24 23 0

原创 LinkedList的源码解析

LinkedList采用的是链式结构,核心代码如下: public class LinkedList<E>{ transient int size = 0; transient Node<E> first; //前驱 transient Nod...

2019-08-19 20:43:40 31 0

原创 ArrayList源码解析

ArrayList内部的结构采用的是数组。 transient Object[] elementData; // non-private to simplify nested class access 当我们使用默认构造函数的时候,代码如下: private static fi...

2019-08-19 20:06:09 28 0

原创 线程池原理

目录 自定义线程池的构造方法: 4种常用线程池 线程池的拒绝策略 execute和submit的区别? 线程池关闭 自定义线程池的构造方法 /** * * @param corePoolSize 核心线程数 * @param maximumPoolSi...

2019-08-19 15:49:19 38 0

原创 Handler机制

通过Handler发送Message到其他线程,首先要在主线程中创建Looper实例,然后启动Looper循环机制; Looper.prepareMainLooper(); Looper.loop(); //启动looper循环 在looper中,在做无限循环MessageQueue中Mes...

2019-08-19 13:58:28 33 0

原创 动态代理的代码实现

1. 首先创建代理接口,一个,多个都没有问题,动态代理同时支持多类型的接口代理 public interface IUser { void setName(String name); } 2. 然后实现委托类 public class UserImpl implements ...

2019-08-13 11:46:02 351 0

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