您的位置:首页 > 移动开发 > Android开发

Android 滑动开关(ToggleButton) 解析

2016-07-02 15:51 274 查看
自定义View的叙述

android在绘制View时,其实就是蒙上眼睛在画板(Canvas)上画画.

他并知道应该把View画多大,画在那,怎么画。所以我们必须实现View的三个重要方法,以告诉他这些信息。

那么就是onMeasure(画多大)

onLayout(画在那)

onDraw(怎么画)

如果早前知道java swing 中在panel中画画的,这个原理是一样的!

如果进行画制那么基础就是了解View的声明周期。

View的生命周期

onFinishedInflate()

当从布局文件创建时调用,做一些初始化的操作,如创建对象等。

当View中所有的子空间,从XML转换 映射 加载之后出发。

可理解为,View之前是在XML中的,当把XML的信息变成虚拟机中的View的时候会调用该方法。

下面我们来看一下 官方原版的解释

Finalize inflating a view from XML. This is called as the last phase of inflation, after all child views have been added.

Even if the subclass overrides onFinishInflate, they should always besure to call the super method, so that we get called.

翻译过来就是在XML过滤一个View完成时。这个方法会被调用,在最新的阶段,即所有的孩子都被加载完成。

既是这个类被重写,依然需要进行super父类的该方法,这样这个方法才会被调用。

onSizeChanged()

当尺寸改变时调用,做一些进一步的初始化,如:处理外部通过set设置的属性。

onMeasure() 当需要测量时调用,指定View的大小(以及所有元素的大小)

onLayout()当需要布局时调用,制定View(包括继承于View的其他控件!)的位置 大小

注:这里需要明白一个问题,在Andorid所有的控件都是继承自View,那么在这些控件被输出时,依然会调用onLayout方法.

onDraw() 当需要绘制时调用,制定View的内容 渲染内容的细节。

onKeyDown(int, KeyEvent) 有按键按下后触发

onKeyUp(int, KeyEvent) 有按键按下后弹起时触发

onTrackballEvent(MotionEvent) 轨迹球事件

onTouchEvent(MotionEvent) 触屏事件

onFocusChanged(boolean, int, Rect) 当View获取 或失去焦点时触发

onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发

onAttachedToWindow() 当view被附着到一个窗口时触发

onDetachedFromWindow() 当view离开附着的窗口时触发,Android123提示该方法和 onAttachedToWindow() 是相反的。

onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发

在动手写之前,必须先了解一下几个概念:

1.View的默认不支持wrap_content,必须重写onMeasure方法,通过,setMeasuredDimension()设置尺寸。

2.基本的时间分发机制,onClickListener一定是在onTouchEvent之后执行。

自定义View的流程

1.继承View

2.重写onMeasure方法

3.重写onDraw方法

4.实现onTouchEvent->边界判断事件监听->invalidate引起重绘

5.完成
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android java