Android
fsilence璐豪
W --- winL --- learnH --- heart
公众号:CoderHouse
欢迎投递简历到快手 https://zhaopin.kuaishou.cn/recruit/e/#/official/social/?workLocationCode=domestic
内推 请邮件 weiluhao@kuaishou.com 附上简历和职位链接
展开
-
扩大View的点击区域
TouchDelegate可以通过设置TouchDelegate 给View的父类来实现点击事件的区域扩充(拦截父View的Touch事件) View child; ViewGroup parent; // 上下左右各扩充10px的点击范围 int sizeDifference = 10; Rect delegateArea = new Rect(); delegateArea.right += sizeDifference; delegateArea.bott原创 2020-07-03 15:34:27 · 575 阅读 · 0 评论 -
RecyclerView中关于UpdateOp的Reorder
大纲: 1. 关于UpdateOp的重新排序2. 对于各类操作移动转换的处理处理方式是将所有的move操作都移动到操作列表的最后,用来合并处理前面有相互交叉的操作。向前依次找到第一个是Move 且 下一个不是Move操作的,然后尝试将Move操作向后移动一位。直到所有的Move操作都被沉到列表的末尾关于Remove操作的交换注意 Remove 类型的UpdateOp 的itemCount 表示要移动到的位置而非移动的个数, Remove操作暂时只支持一次移动一个思想查找移动后move的操原创 2020-05-16 11:25:42 · 289 阅读 · 0 评论 -
RecyclerView AdapterHelper源码
大纲:1. UpdateOp2. 如何管理和执行UpdateOpAdapterHelper是帮助RecyclerView 管理和执行更新操作的帮助类。RecyclerView将每一次更新操作封装成了一个UpdateOp操作,然后通过AdapterHelper进行管理和执行。我们先来看UpdateOp的数据结构: static class UpdateOp { static final int ADD = 1; static final int REMOVE原创 2020-05-15 22:26:20 · 540 阅读 · 0 评论 -
RecyclerView ChildHelper源码
大纲: 1. ChildHelper的职责2. hidden的处理方式2. 关于Bucket的位计算概述ChildHelper帮助处理RecyclerView中的View的辅助类。 RecyclerView中的childern被分成了2类一类是当前正在使用可见的,一类是hidden的。ChildHelper提供了2类方法,一类获取getChildCount等,一类是Unfilter的方法 例如getUnfilterChildCount , 区别是getChildCount返回当前可见的View的原创 2020-05-11 20:27:31 · 248 阅读 · 0 评论 -
Android 实现2个ListView垂直排列
思路: 用ExpandableListView实现,在onCreate()中展开所有的groupView 并且屏蔽调收起事件。Adapter的实现:public class TestAdapter extends BaseExpandableListAdapter {private Context context;private List list1;private List原创 2014-02-14 16:22:38 · 4889 阅读 · 0 评论 -
IPC之AIDL(3)系统为我们做了什么
内容大纲:1.了解基本的aidl原理(不涉及底层)前面几篇我们介绍了如何使用AIDL实现IPC 那么你会有疑问了 我们用的asInterface是什么, Stub又是什么,现在让我们一点一点来看。在我们编译的时候,系统会吧aidl生成对应的java类(这就是为什么支持aidl这种文件格式了),我们先来看一下系统生成的类(本文涉及到的系统源码都是基于android-23): package com原创 2017-05-16 16:01:15 · 361 阅读 · 0 评论 -
EventBus Q&A
阅读EventBus源码过程中总结的一些问题和答案EventBus 中如果一个subscriber中的父类也注册了相同的监听事件,以哪个为准以子类中的事件为准,在SubscriberMethodFinder方法中,在添加一个subscribeMethod的时候 会调用FindState的checkAdd方法,其中有这么一段逻辑: if (methodClassOld == null || m原创 2017-05-16 16:03:29 · 483 阅读 · 0 评论 -
window的showAsDropDown失效的问题
在使用Popupwindow的showAsDropDown的时候,有时候会在特定机型上无法正确显示(全屏显示了)。 目前的解决方案是如果需要全屏显示的popwindow,要计算出window的实际高度然后调用popupwindow的setHeight方法后再调用showAdDropDown即可。 获取PopupWindow的实际高度: public static void showPop原创 2017-05-17 14:40:43 · 1406 阅读 · 0 评论 -
multidex找不到的问题
最近将AndroidStudio升级到了2.3, 然后发现instan run不好使了,要求Gradle插件版本必须是2.3以上,所以讲gradle插件版本修改为2.3.1,然后发现点击运行会报错:程序包:multidex 找不到。 在之前的版本中只要配置好multidex = true 插件会自动引用multidex的包,升级到2.3.1后不能自动引用 只能手动添加了, 在dependencie原创 2017-05-17 14:42:45 · 2895 阅读 · 0 评论 -
AndroidStudio插件推荐
AndroidStudio插件推荐最近开发了2个AndroidStuio插件,像大家推荐一下,也欢迎给我提issues。 POJOGenerator在我们日常开发中我们经常需要和后台打交道,将后台定义的接口文档转化成我们的java对象,这个工作有些繁琐,而后台也不一定给出的是完整的json格式的文档说明,现在插件中心也有很多将json转换为java对象的插件,我这里主要解决的是 ...原创 2018-05-20 00:24:31 · 388 阅读 · 0 评论 -
AndroidStudio插件推荐
最近开发了2个AndroidStuio插件,像大家推荐一下,也欢迎给我提issues。 POJOGenerator在我们日常开发中我们经常需要和后台打交道,将后台定义的接口文档转化成我们的java对象,这个工作有些繁琐,而后台也不一定给出的是完整的json格式的文档说明,现在插件中心也有很多将json转换为java对象的插件,我这里主要解决的是 将按一定格式排列的数据转换为jav...原创 2018-06-04 13:59:02 · 368 阅读 · 0 评论 -
我为什么选择yaml格式做配置文件
最近要写个程序的自动生成脚本,需要用到配置文件。初期考虑使用json,再使用json的过程中,我遇到了一下问题: 1. json不支持注释 2. 过多的层级嵌套 3. 过于严苛的格式 json不支持注释在定义一个配置文件时,如果不能使用注解,我们总会被繁杂的信息所冲击的头晕脑胀。所以一个好的注释是很重要的,虽然json可以通过 “//”:的方式间接实现注释的功能。但是它降低了配置文...原创 2018-07-20 15:56:52 · 5615 阅读 · 0 评论 -
Gradle发布项目到Maven(New)
之前写过一篇Gradle发布到maven的Blog,具体可见 Android Gradle上传Maven仓库。最近由于项目需要需要一个publishToLocal的功能,发现基于之前的maven插件不太好配置,而且Gradle官方也有了新的发布插件,所以就产生了本文,基于maven-publish插件实现maven上传。 首先我们明确一下我们的需求: 1.我们需要发布到maven 2.我...原创 2018-08-09 16:51:30 · 2803 阅读 · 0 评论 -
WindowSoftInputMode
在activity的配置文件中 添加stateHidden :原创 2014-05-19 17:59:26 · 761 阅读 · 0 评论 -
Android listview垂直滑动指定距离
在写自动化代码的时候对于listview的拖动有时候效果不尽人意,例如robotium自带的滚动操作scrollListToLine,最终的核心就是:inst.runOnMainSync(new Runnable(){ public void run(){ view.setSelection(lineToMoveTo); } });那么也转载 2014-07-24 17:17:47 · 3291 阅读 · 4 评论 -
IPC概述
摘要:1.什么是IPC2.android实现IPC的几种方式原创 2016-09-12 20:45:39 · 656 阅读 · 0 评论 -
IPC之Messenger
内容大纲:1.学会使用Messenger进行进程间通信 在进行具体的探讨之前,我们先明确2个基本概念客户端和服务端。在本例中客户端是指发起处理请求的进程(app的主进程), 服务端(service端)指一个另外一个提供服务的进程(主要是指service)。Messenger可以理解为信使,它可以实现消息的发送,底层使用Binder实现的(所以可以跨进程)。我们来看Messenger的构造函数:原创 2016-09-13 11:09:52 · 308 阅读 · 0 评论 -
IPC之AIDL(1)实现AIDL
使用AIDL实现IPC原创 2016-09-18 11:13:02 · 372 阅读 · 0 评论 -
IPC之AIDL(2)in out inout
内容大纲: 1.在AIDL的时候正确使用in out inout上一篇我们用AIDL简单实现了一个IPC,其中我们谈到在定义aidl接口中的除基本类型和AIDL接口外的参数要调价修饰符in out 或 inout中的一种,本文将帮助大家理解in out inout,并让读者可以正确的使用in out inout。 在介绍in out inout的区别之前我们先明确两个基本概念:起点 和 终点,原创 2016-09-20 17:08:41 · 1133 阅读 · 0 评论 -
从ant到gradle
从ant到gradle本人前段时间完成了打包工具从ant到gradle的过度,本文主要阐述在迁移过程中项目遇到的一些坑以及解决方案,并不会详细阐述整个过程(一般除非使用了插件话等,否则参考下边的关于gradle的文章足以)。关于gradle关于gradle本文不做讨论 可以参考:http://blog.csdn.net/innost/article/details/48228651 项目背景我们的原创 2016-04-22 14:42:38 · 3971 阅读 · 0 评论 -
Android 事件分发一
Android 事件分发一Android事件分发是每一个Android程序员都应该烂熟于心的内容。本文将对Android的时间分发做一个整体(不涉及系统源码)描述。原创 2016-08-09 11:57:59 · 326 阅读 · 0 评论 -
Android事件分发二
Android事件分发二上一篇我们介绍了通常情况下的事件分发,下面我们来看一看在FrameLayout 两个View重叠后的时间分发情况。原创 2016-08-11 16:35:53 · 468 阅读 · 0 评论 -
Android面试知识树
最近总结了下初中级Android工程师在面试过程中常常被问到的知识点,做了张图,当然没有正确答案了,只是给大家提供一个面试前的复习大纲原创 2016-08-12 10:45:56 · 673 阅读 · 0 评论 -
善用adb
善用adb内容大纲: 1.什么是ADB 2.安装adb 3.ADB常用命令 4.善用ADB 什么是adbadb全称Android Debug Bridge, 通过ADB我们可以在电脑上操控手机的一些行为 安装adbadb存在于sdk\platform-tools,你只需要在环境变量path中配置上就可以在命令行或AS自带的Terminal中使用 adb常用命令下面只对常用命令做一个描述原创 2016-08-15 15:56:22 · 368 阅读 · 0 评论 -
代码中setProgressDrawable
在Android代码中直接调用setProgressDrawable不好用,应为get Drawable draw = getResources().getDrawable(R.drawable.errorprogressbar); draw.setBounds(progressBar.getProgressDrawab原创 2014-08-13 14:07:25 · 9677 阅读 · 6 评论 -
ScrollView的dispatchTouchEvent截取时遇到的问题
public boolean dispatchTouchEvent(MotionEvent ev) { switch (ev.getActionMasked()) { case MotionEvent.ACTION_DOWN : doublePointer = false; onTouchEvent(ev);原创 2014-07-31 16:20:11 · 2143 阅读 · 0 评论 -
getMeasuredHeight 和 getHeight
转于:http://blog.csdn.net/chongshi007/article/details/8985063实际上在当屏幕可以包裹内容的时候,他们的值相等,只有当view超出屏幕后,才能看出他们的区别:getMeasuredHeight()是实际View的大小,与屏幕无关,而getHeight的大小此时则是屏幕的大小。当转载 2014-07-30 17:24:39 · 3906 阅读 · 0 评论 -
各级别dpi的值
hdpi: 240 , ldpi: 120 , mdpi: 160 , xhdpi: 320转载 2014-09-03 14:04:09 · 2833 阅读 · 0 评论