Android 的View源码中有下面代码:
/**
* This function is called whenever the state of the view changes in such
* a way that it impacts the state of drawables being shown.
*
* <p>Be sure to call through to the superclass when overriding this
* function.
*
* @see Drawable#setState(int[])
*/
protected void drawableStateChanged() {
Drawable d = mBackground;
if (d != null && d.isStateful()) {
d.setState(getDrawableState());
}
}
当手指按在视图上的时候,视图的状态就已经发生了变化,此时视图的pressed状态是true。每当视图的状态有发生改变的时候,就会回调View的drawableStateChanged()方法。
更多的View源码分析见大牛:http://blog.csdn.net/guolin_blog/article/details/17045157