Android Tech And Thoughts.

Android Tech And Thoughts.

Recording myself sometimes helping others

View常见滑动方式与比较
常见滑动方式掌握滑动的方法是实现自定义 View 的基础,常见的实现滑动的方式有三种 ScrollTo/SrollBy 动画 改变View的LayoutParams使得View重新布局从而实现滑动 使用ScrollTo/ScrollBy1public void scrollTo(int x,int y) x: 滑动到的距离,这个距离指的是相对于初始位置(并非上一次的位置,而是View内容最初的位置,最初是0) y: 同上 View内部会有两个变量来记录当前内容的位置 : mScrollX 和 mScrollY ,向左或者向上为正,反之为负 1public void scrollBy...
GestureDetector
Base On Android Developer Guide 尽管应用不应依赖轻触手势来执行基本行为(因为手势可能无法在所有上下文中供所有用户使用,用户可能不知道需要轻触手势来执行某些操作),但向应用添加基于轻触的互动可以极大地提升其实用性和吸引力(可以考虑做一个行为备份,即用户可以同时通过更常见的方式来执行这些基本操作)。 本文中,我们主要介绍以下几个方面的内容 检测常用手势:了解如何使用 GestureDetector 检测基本轻触手势,例如滚动、滑动和点按两次。 跟踪轻触和指针移动:了解如何跟踪指针移动。 以动画方式显示滚动手势:了解如何使用滚动条(Scroller 或 Ove...
Linux内存管理
这篇文章是大量基于网络资源的学习笔记,但由于所参考的即是转载过的版本(且博客作者未注明转载源,在几经寻找仍未果的情况下,仍然无法找到真实出处,特此注明,如作者见到此文,请您联系我,我将注明出处) 本文着重从开发者的角度谈谈对内存管理的理解。遵循”理论来源于实践”的教条,我们不必一下子就钻入源码,那样容易迷失,所以本文从外到内(先从用户编程的范畴)来观察进程如何使用内存,等到大家有了直观的认识后,再深入到内核去学习内存如何被管理等理论知识。最后再通过一个实例融会贯通。 Linux 逻辑地址-线性地址-物理地址 逻辑地址:机器语言中出现的内存地址,都是逻辑地址。逻辑地址是相对于段的偏移地...
Java RTTI [include reflect]
RTTI - 运行期类型识别 RTTI的概念:当我们手上只有基类型的一个引用时,利用它判断一个对象的正确类型。 本章将讨论如何利用 Java 在运行期间查找对象和类信息。这主要采取两种形式 01) 一种是传统 RTTI ,它假定我们已在编译和运行期拥有所有类型 02) 另一种是 Java 1.1 特有的 “反射” 机制,利用它可以在运行期独立查找类信息 Class对象要理解 RTTI 在 Java 中的工作原理,首先必须知道类型信息在运行时是如何表示的。这项工作是由称为 Class 对象的特殊对象完成的,它包含了与类有关的信息。事实上,Class对象就是用来创建所有的”常规”对象的。J...
Lint简单使用
什么是LintLint是 Android Studio 提供的 代码扫描分析工具 , 他可以帮我们发现代码结构/质量 问题,而且这个过程不需要我们手写测试用例(从代码层面直接分析) 在使用Lint的过程中,比较需要注意的是,我们可以手动调节 问题类型 的错误级别,如 warning/error/weak warning 等等 Lint 工作方式简单介绍Lint 会根据预先配置的检测标准检查我们 Android 项目的源文件,发现潜在的 bug 或者可以优化的地方,优化的内容主要包括以下几方面: Correctness:不够完美的编码,比如硬编码、使用过时 API 等 Performan...
ListView与RecyclerView用法
前言RecyclerView 是我们用的最多的控件,也是一个较为复杂的控件,本文的目的在于疏通RecyclerView的基本用法以及原理,不对源码以及内部组件进行过于深入的讨论(当然,有兴趣的话也会说一说),结合一些自己在开发中的经验,谈谈如何设计一个流畅的列表。 带着问题来思考1.RecyclerView.Adapter的几个函数的作用(getItemCount,) 2.Recycler的复用机制 3.如何编写多Item,如何添加footer与header 4.RecyclerView滑动卡顿的优化,RecyclerView资源是如何释放的,哪些情况容易出现OOM,有没有可能出现内...
赤壁赋
壬戌 之秋,七月既望,苏子与客泛舟,游于赤壁之下。清风徐来,水波不兴。举酒属客,诵明月之诗,歌窈窕之章。少 焉,月出于东山之上,徘徊于斗牛之间。白露横江,水光接天。纵一苇之所如,凌万顷之茫然。浩浩乎如冯虚御风,而不知其所止;飘飘乎如遗世独立,羽化而登仙。 于是饮酒乐甚,扣舷而歌之。歌曰:“桂棹兮兰桨,击空明兮溯流光。渺渺兮予怀,望美人兮天一方。”客有吹洞箫者,倚歌而和之。其声呜呜然,如怨如慕,如泣如诉,余音袅袅,不绝如缕。舞幽壑之潜蛟,泣孤舟之嫠妇。  苏子愀然,正襟危坐,而问客曰:“何为其然也?”客曰:“‘月明星稀,乌鹊南飞’,此非曹孟德之诗乎?西望夏口,东望武昌。山川相缪,郁乎苍苍...
Class文件结构
Class文件结构说明:本文中,通俗地将任意一个有效的类或接口所应当满足的格式称为 “Class 文件格式”,实际上它并不一定以磁盘文件的形式存在。 Class文件是一组以8位字节(对应2位16进制编码)为基础单位的二进制流,各个项目严格按照顺序紧凑地排列在Class文件之中(保证了解析地准确性),当遇到8位字节以上空间的数据项时,则会按照高位在前的方式(Big-Endian)分割成若干个8位字节进行存储。 根据Java虚拟机规范,Class文件格式采用一种类似C语言结构体的形式来组织数据,这种伪结构体中只有两种数据类型:无符号数 和 表,后面的解析以这两种数据类型为基础。 无符号数属于...
View的三大流程
前言这篇文章会抛弃所有的细枝末节,聚焦在View的Measure过程上,因为这一部分是最难懂,也是最容易思维混乱的地方,由于作者水平有限,文中如果有描述错误,或者不严谨的地方,还请指正,不甚感激。 理解MeasureSpecMeasureSpec决定了一个View的尺寸,而MeasureSpec受到父ViewGroup和自己的layoutParams的影响 MeasureSpecMeasureSpec高2位代表SpecMode,低30位代表SpecSize(某种测量模式下的大小) Api 1public static int makeMeasureSpec(int size,int mo...