WunWun' Blog

Talk is cheap

Android 绘图机制

屏幕的尺寸信息 屏幕参数 屏幕大小 指屏幕对角线的长度,通常使用“寸”来度量,例如4.7寸,5.5寸 分辨率 分辨率指手机屏幕的像素点个数,例如720*1280就是指屏幕的分辨率。指宽有720个像素点,而高有1280个像素点。 PPI 每英寸像素(Pixels Per Inch),又被称为DPI(Dots Per Inch)。它是由对角线的像素点数除以屏...

Android 图像处理之色彩特效处理

颜色矩阵分析 色彩处理中,从三个角度来描述一个图像 色相(H), 色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。 饱和度(S),色彩的纯度,越高色彩越纯,低则逐渐变灰,取0-100%的数值。 明度(V), 亮度(L),取0-100%。 在Android中使用一个颜色矩阵——ColorMatrix,来处理图像的...

Android Scroll分析2

实现滑动的七种方法

滑动的基本思想:当触摸View时,系统记下当前触摸点坐标;当手指移动时,系统记下移动后的触摸点坐标,从而获取到相对于前一次坐标点的偏移量,并通过偏移量来修改View的坐标,这样不断重复,从而实现滑动过程。 layout方法 在View绘制时,会调用onLayout()方法来设置显示的位置。同样,可以通过修改View的left,top,right,bottom四个属性来控制View的坐标。...

Android Scroll分析1

坐标系,MotionEvent

Android坐标系 在Android中,将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向。 系统提供了getLocationOnScreen(intLocation[])这样的方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标。 在触控事件中使用getRawX(),getRawY()方法所获得的...

ListView使用技巧

ListView常用优化技巧 使用ViewHolder模式提高效率 ViewHolder模式充分利用ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化控件。使用ViewHolder非常简单,只需要在自定义Adapter中定义一个内部类ViewHolder,并将布局中的控件作为成员变量。 设置项目间分隔线 ListView...

自定义ViewGroup

自定义ViewGroup ViewGroup存在的目的就是为了对其子View进行管理,为其子View添加显示,响应的规则。因此自定义ViewGroup通常需要重写onMeasure()方法来对其子View进行测量,重写onLayout()方法来确定子View的位置,重写onTouchEvent()方法增加响应事件。 实现一个类似ScrollView的ViewGroup 首先放置好Vie...

创建自定义控件2

创建复合控件

实现自定义控件 实现自定义控件的三种方法 对现有控件进行扩展 通过组合来实现新的控件 重写View来实现全新的控件 在View中比较重要的回调方法 onFinishInflate() 从XML加载组件后回调 onSizeChanged() 组件大小改变时回调 onM...

创建自定义控件1

对现有控件进行扩展

实现自定义控件 实现自定义控件的三种方法 对现有控件进行扩展 通过组合来实现新的控件 重写View来实现全新的控件 在View中比较重要的回调方法 onFinishInflate() 从XML加载组件后回调 onSizeChanged() 组件大小改变时回调 onM...

创建自定义控件3

对现有控件进行扩展

实现自定义控件 实现自定义控件的三种方法 对现有控件进行扩展 通过组合来实现新的控件 重写View来实现全新的控件 在View中比较重要的回调方法 onFinishInflate() 从XML加载组件后回调 onSizeChanged() 组件大小改变时回调 onM...

View的测量

MeasureSpec类与测量模式 Android中提供了一个MeasureSpec类,来帮助我们测量View。MeasureSpec是一个32位的int值,其中高2位为测量的模式,低30位为测量的大小。(使用位运算是为了提高并优化效率)。 测量模式分为三种。 EXACTLY 精确模式。当把属性(layout_width或layout_height)指定为具体数值,如andr...