Android Filter 分析

简介

Filter 是 Android 提供的用于搜索或过滤数据的工具类,它在 android.widget 包中,从包名上看,和控件相关,适用于处理界面相关的搜索场景。

通常可与 SearchView 控件组合使用,可为用户提供便捷的列表项搜索功能。

用法

考虑在一个文本类型的列表视图上进行搜索,例如联系人列表,为了展示数据通常使用一个 ListView 或 RecyclerView 和实现它们对应的适配器,那么适配器很适合成为一个 Filterable 子类型,支持对其内部的字符串列表数据进行搜索。

阅读更多

Android View 事件分发机制

触摸事件处理框架

Android 的 View 和 ViewGroup 采用了 Composite(组合) 设计模式,View 的组合具有高度动态性,在这种情况下,由于触摸事件是从底层驱动传递至上层 View 对象,如果按照普通对象间传递信息的方式,将会很复杂,很难处理,这里 Android 采用了 Chain of Responsibility(责任链) 设计模式,触摸事件流将通过视图树,使每个 View 对象都有机会处理事件,一旦某个 View 选择接收事件流,那么整个事件将交给它处理,如果 View 选择不处理,那么事件流会继续传递,直到找到最后的处理者,在处理触摸事件时有几个重要的方法,在弄懂 Android 事件分发机制之前,需要先了解这几个方法的作用及关系。

阅读更多

Android 坐标系和 View 滑动方法

Android 二维坐标系

和 Java 图形化界面开发类似,Android 中也有一种坐标系,这里说说二维平面的坐标系,在 Android 中,坐标系起始点以左上角为原点,竖直向下是 y 轴的方向,横向向右是 x 轴延伸方向,对于 Android 中的 View 来说,它本身所具有的一些位置相关的参数会根据这个坐标系来确定数值和正负,掌握这些有助于理解 View 在布局层次中所处位置的意义。

下面用一个典型例子来说明 Android 中的坐标系:

阅读更多

Android 自定义 View

概述

View 是由视图和属性组成的控件,实现一个 View 的自定义,主要包括定义它自身的尺寸,以及绘制它的内容,并且在自身属性发生改变时能正确更新其绘制的内容。

ViewGroup 是 View 的容器类型,内部可容纳多个 View,并对子 View 的位置进行规划,根据自身特性的不同,子 View 的摆放特点也各不相同。由于 ViewGroup 本身也是 View 的子类,所以 ViewGroup 本身也可作为子View 出现。自定义 ViewGroup 时,更着重于对子 View 位置的处理,并且尺寸由子 View 的尺寸和摆放位置决定,在一些复杂的自定义 View 中,内容的绘制和子 View 位置的处理可能显的同等重要。

阅读更多