<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[璐豪笔记]]></title><description><![CDATA[多看！多读！多思！多写！多行！]]></description><link>https://blog.csdn.net/wei7017406</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; wei7017406]]></copyright><item><title><![CDATA[扩大View的点击区域]]></title><link>https://blog.csdn.net/wei7017406/article/details/107106942</link><guid>https://blog.csdn.net/wei7017406/article/details/107106942</guid><author>wei7017406</author><pubDate>Fri, 03 Jul 2020 15:34:27 +0800</pubDate><description><![CDATA[TouchDelegate
可以通过设置TouchDelegate 给View的父类来实现点击事件的区域扩充（拦截父View的Touch事件）
   View child;
   ViewGroup parent;
   // 上下左右各扩充10px的点击范围
   int sizeDifference =  10;
   Rect delegateArea = new Rect();
   delegateArea.right += sizeDifference;
   delegateArea.bott]]></description><category></category></item><item><title><![CDATA[RecyclerView中关于UpdateOp的Reorder]]></title><link>https://blog.csdn.net/wei7017406/article/details/106156510</link><guid>https://blog.csdn.net/wei7017406/article/details/106156510</guid><author>wei7017406</author><pubDate>Sat, 16 May 2020 11:25:42 +0800</pubDate><description><![CDATA[大纲: 
1. 关于UpdateOp的重新排序
2. 对于各类操作移动转换的处理

处理方式是将所有的move操作都移动到操作列表的最后，用来合并处理前面有相互交叉的操作。
向前依次找到第一个是Move 且 下一个不是Move操作的，然后尝试将Move操作向后移动一位。直到所有的Move操作都被沉到列表的末尾
关于Remove操作的交换
注意 Remove 类型的UpdateOp 的itemCount 表示要移动到的位置而非移动的个数， Remove操作暂时只支持一次移动一个
思想

查找移动后move的操]]></description><category></category></item><item><title><![CDATA[RecyclerView AdapterHelper源码]]></title><link>https://blog.csdn.net/wei7017406/article/details/106150851</link><guid>https://blog.csdn.net/wei7017406/article/details/106150851</guid><author>wei7017406</author><pubDate>Fri, 15 May 2020 22:26:20 +0800</pubDate><description><![CDATA[大纲：
1. UpdateOp
2. 如何管理和执行UpdateOp

AdapterHelper是帮助RecyclerView 管理和执行更新操作的帮助类。RecyclerView将每一次更新操作封装成了一个UpdateOp操作，然后通过AdapterHelper进行管理和执行。我们先来看UpdateOp的数据结构:
    static class UpdateOp {

        static final int ADD = 1;

        static final int REMOVE]]></description><category></category></item><item><title><![CDATA[RecyclerView ChildHelper源码]]></title><link>https://blog.csdn.net/wei7017406/article/details/106061829</link><guid>https://blog.csdn.net/wei7017406/article/details/106061829</guid><author>wei7017406</author><pubDate>Mon, 11 May 2020 20:27:31 +0800</pubDate><description><![CDATA[大纲: 
1. ChildHelper的职责
2. hidden的处理方式
2. 关于Bucket的位计算

概述
ChildHelper帮助处理RecyclerView中的View的辅助类。 RecyclerView中的childern被分成了2类一类是当前正在使用可见的，一类是hidden的。ChildHelper提供了2类方法，一类获取getChildCount等，一类是Unfilter的方法 例如getUnfilterChildCount ， 区别是getChildCount返回当前可见的View的]]></description><category></category></item><item><title><![CDATA[Gradle发布项目到Maven(New)]]></title><link>https://blog.csdn.net/wei7017406/article/details/81539919</link><guid>https://blog.csdn.net/wei7017406/article/details/81539919</guid><author>wei7017406</author><pubDate>Thu, 09 Aug 2018 16:51:30 +0800</pubDate><description><![CDATA[之前写过一篇Gradle发布到maven的Blog，具体可见 Android Gradle上传Maven仓库。最近由于项目需要需要一个publishToLocal的功能，发现基于之前的maven插件不太好配置，而且Gradle官方也有了新的发布插件，所以就产生了本文，基于maven-publish插件实现maven上传。  

首先我们明确一下我们的需求： 
1.我们需要发布到maven 
2.我...]]></description><category></category></item><item><title><![CDATA[我为什么选择yaml格式做配置文件]]></title><link>https://blog.csdn.net/wei7017406/article/details/81133852</link><guid>https://blog.csdn.net/wei7017406/article/details/81133852</guid><author>wei7017406</author><pubDate>Fri, 20 Jul 2018 15:56:52 +0800</pubDate><description><![CDATA[最近要写个程序的自动生成脚本，需要用到配置文件。初期考虑使用json，再使用json的过程中,我遇到了一下问题: 
1. json不支持注释 
2. 过多的层级嵌套 
3. 过于严苛的格式  

json不支持注释

在定义一个配置文件时，如果不能使用注解，我们总会被繁杂的信息所冲击的头晕脑胀。所以一个好的注释是很重要的，虽然json可以通过 “//”：的方式间接实现注释的功能。但是它降低了配置文...]]></description><category></category></item><item><title><![CDATA[使用pygal画图]]></title><link>https://blog.csdn.net/wei7017406/article/details/80933634</link><guid>https://blog.csdn.net/wei7017406/article/details/80933634</guid><author>wei7017406</author><pubDate>Thu, 05 Jul 2018 21:47:56 +0800</pubDate><description><![CDATA[使用pygal画图

今天需要用python画一些数据比较的图，上网对比完python的图像库后决定选用pygal（考虑到 上手的难易度，和我对图形暂时没有复杂的需求） 
pygal文档

python安装 

pip install pygal    

基本使用方式  



    bar = pygal.Bar()
    bar.title = &quot;bar测试&quot;
    bar.x_lab...]]></description><category></category></item><item><title><![CDATA[AndroidStudio插件推荐]]></title><link>https://blog.csdn.net/wei7017406/article/details/80566393</link><guid>https://blog.csdn.net/wei7017406/article/details/80566393</guid><author>wei7017406</author><pubDate>Mon, 04 Jun 2018 13:59:02 +0800</pubDate><description><![CDATA[最近开发了2个AndroidStuio插件，像大家推荐一下,也欢迎给我提issues。    



POJOGenerator

在我们日常开发中我们经常需要和后台打交道，将后台定义的接口文档转化成我们的java对象，这个工作有些繁琐，而后台也不一定给出的是完整的json格式的文档说明，现在插件中心也有很多将json转换为java对象的插件，我这里主要解决的是 将按一定格式排列的数据转换为jav...]]></description><category></category></item><item><title><![CDATA[AndroidStudio插件推荐]]></title><link>https://blog.csdn.net/wei7017406/article/details/80379366</link><guid>https://blog.csdn.net/wei7017406/article/details/80379366</guid><author>wei7017406</author><pubDate>Sun, 20 May 2018 00:24:31 +0800</pubDate><description><![CDATA[AndroidStudio插件推荐

最近开发了2个AndroidStuio插件，像大家推荐一下,也欢迎给我提issues。    

POJOGenerator

在我们日常开发中我们经常需要和后台打交道，将后台定义的接口文档转化成我们的java对象，这个工作有些繁琐，而后台也不一定给出的是完整的json格式的文档说明，现在插件中心也有很多将json转换为java对象的插件，我这里主要解决的是 ...]]></description><category></category></item><item><title><![CDATA[okHttp之请求Call]]></title><link>https://blog.csdn.net/wei7017406/article/details/73343959</link><guid>https://blog.csdn.net/wei7017406/article/details/73343959</guid><author>wei7017406</author><pubDate>Fri, 16 Jun 2017 17:31:46 +0800</pubDate><description><![CDATA[前一篇我们简单介绍了OkHttp中的几个常见的概念，我们知道OkHttpClient是请求的门户（外观模式），通过OkHttpClient创建了一个Call对象，然后通过Call对象来实现网络的请求，本篇我们来看一下Call做同步和异步时候都做了些什么。]]></description><category></category></item><item><title><![CDATA[OkHttp源码初探]]></title><link>https://blog.csdn.net/wei7017406/article/details/73343018</link><guid>https://blog.csdn.net/wei7017406/article/details/73343018</guid><author>wei7017406</author><pubDate>Fri, 16 Jun 2017 17:28:55 +0800</pubDate><description><![CDATA[在之前的文章我中我们介绍了OkHttp的基本使用方法并简单说明了源码下各个module的功能作用，从这篇开始我们将要开始分析okHttp的源码。]]></description><category></category></item><item><title><![CDATA[okHttp各个module介绍]]></title><link>https://blog.csdn.net/wei7017406/article/details/73189197</link><guid>https://blog.csdn.net/wei7017406/article/details/73189197</guid><author>wei7017406</author><pubDate>Tue, 13 Jun 2017 18:22:34 +0800</pubDate><description><![CDATA[上一篇我们简单介绍了okHttp，了解了OkHttp的基本用法，并下载了okhttp的源码。本篇我们将一起来看看okhttp源码的目录结构，来大概了解下okHttp源码下的各个module的作用。]]></description><category></category></item><item><title><![CDATA[okhttp-简介]]></title><link>https://blog.csdn.net/wei7017406/article/details/72967231</link><guid>https://blog.csdn.net/wei7017406/article/details/72967231</guid><author>wei7017406</author><pubDate>Fri, 09 Jun 2017 17:48:19 +0800</pubDate><description><![CDATA[An HTTP & HTTP/2 client for Android and Java applicationsokhttp]]></description><category></category></item><item><title><![CDATA[multidex找不到的问题]]></title><link>https://blog.csdn.net/wei7017406/article/details/72383732</link><guid>https://blog.csdn.net/wei7017406/article/details/72383732</guid><author>wei7017406</author><pubDate>Wed, 17 May 2017 14:42:45 +0800</pubDate><description><![CDATA[最近将AndroidStudio升级到了2.3， 然后发现instan run不好使了，要求Gradle插件版本必须是2.3以上，所以讲gradle插件版本修改为2.3.1，然后发现点击运行会报错：程序包：multidex 找不到。  在之前的版本中只要配置好multidex = true 插件会自动引用multidex的包，升级到2.3.1后不能自动引用 只能手动添加了, 在dependencie]]></description><category></category></item><item><title><![CDATA[window的showAsDropDown失效的问题]]></title><link>https://blog.csdn.net/wei7017406/article/details/72383708</link><guid>https://blog.csdn.net/wei7017406/article/details/72383708</guid><author>wei7017406</author><pubDate>Wed, 17 May 2017 14:40:43 +0800</pubDate><description><![CDATA[在使用Popupwindow的showAsDropDown的时候，有时候会在特定机型上无法正确显示（全屏显示了）。  目前的解决方案是如果需要全屏显示的popwindow，要计算出window的实际高度然后调用popupwindow的setHeight方法后再调用showAdDropDown即可。 
获取PopupWindow的实际高度:     public static void showPop]]></description><category></category></item><item><title><![CDATA[EventBus Q&A]]></title><link>https://blog.csdn.net/wei7017406/article/details/72301770</link><guid>https://blog.csdn.net/wei7017406/article/details/72301770</guid><author>wei7017406</author><pubDate>Tue, 16 May 2017 16:03:29 +0800</pubDate><description><![CDATA[阅读EventBus源码过程中总结的一些问题和答案EventBus 中如果一个subscriber中的父类也注册了相同的监听事件，以哪个为准以子类中的事件为准，在SubscriberMethodFinder方法中，在添加一个subscribeMethod的时候  会调用FindState的checkAdd方法，其中有这么一段逻辑：
   if (methodClassOld == null || m]]></description><category></category></item><item><title><![CDATA[IPC之AIDL(3)系统为我们做了什么]]></title><link>https://blog.csdn.net/wei7017406/article/details/72301396</link><guid>https://blog.csdn.net/wei7017406/article/details/72301396</guid><author>wei7017406</author><pubDate>Tue, 16 May 2017 16:01:15 +0800</pubDate><description><![CDATA[内容大纲：1.了解基本的aidl原理（不涉及底层）
前面几篇我们介绍了如何使用AIDL实现IPC 那么你会有疑问了 我们用的asInterface是什么， Stub又是什么，现在让我们一点一点来看。在我们编译的时候，系统会吧aidl生成对应的java类（这就是为什么支持aidl这种文件格式了），我们先来看一下系统生成的类(本文涉及到的系统源码都是基于android-23)： 
package com]]></description><category></category></item><item><title><![CDATA[ReactNative调研报告]]></title><link>https://blog.csdn.net/wei7017406/article/details/72084767</link><guid>https://blog.csdn.net/wei7017406/article/details/72084767</guid><author>wei7017406</author><pubDate>Sun, 14 May 2017 23:54:25 +0800</pubDate><description><![CDATA[2015年9月15日Facebook发布了ReactNative for Android，引发了学习使用ReactNative开发跨平台引用的热潮。目前React Native发布到了0.44的版本。最近项目中考虑是否要接入ReactNative, 所以对ReactNative进行了一些调研性的工作。  ReactNative简介在reactnative中文网上有以下简介:  React Nativ]]></description><category></category></item><item><title><![CDATA[用gradle构建java项目]]></title><link>https://blog.csdn.net/wei7017406/article/details/72084764</link><guid>https://blog.csdn.net/wei7017406/article/details/72084764</guid><author>wei7017406</author><pubDate>Sun, 14 May 2017 23:52:55 +0800</pubDate><description><![CDATA[一般像后台的项目都是用maven构建的，我们来看一下使用gradle来构建java项目，本文不涉及到具体的gradle配置IDE: idea
首先安装gradle 并配置环境变量  
在项目目录下执行 gradle wrapper 生成wrapper文件（之后再idea中配置使用wrapper构建，使用wrapper的好处在于使用项目配置的gradle版本 不会因为版本冲突引发问题)可以通过–ver]]></description><category></category></item><item><title><![CDATA[Android Gradle上传Maven仓库]]></title><link>https://blog.csdn.net/wei7017406/article/details/72084762</link><guid>https://blog.csdn.net/wei7017406/article/details/72084762</guid><author>wei7017406</author><pubDate>Sun, 14 May 2017 23:51:28 +0800</pubDate><description><![CDATA[在Android的gradle配置上追加上传Maven的相关操作  maven的gradle插件Android里内置了maven插件 只需要apply plugin: “maven” 即可使用maven插件配置maven配置maven仓库地址在root 下的build.gradle 的subprojects下的repositories中追加一下maven仓库地址，表示给子项目添加仓库地址  mave]]></description><category></category></item></channel></rss>