android中的AdapterView阅读

其实我是想看ListView,但是ListView135k,父类AbsListView216k,爷类AdapterView39k。所以只能从老人家下手了。AdapterView直接继承了View,所以从这里看也是比较简单的方法。刚开始写android的时候总觉得Spinner这种鸡肋类存在没什么意义。看了类结构(前一篇有)之后才发现,这个类不常用,但是可以拿来学习,因为很小啊。乍看AdapterView很难看出它是做什么的。而AbsSpinner15k,Spinner25k这么看起来就简单多了吧。

不多说了,问题还得一点一点解决。


BaseLine

看源代码的时候多少会涉及到baseline的问题。View带有一个方法叫getBaseline(),默认返回-1。

android中的AdapterView阅读_第1张图片

baseline是英文中的东西。还记得中学时写英文单词用的作业本吗?如上图,baseline就是那根红线。对于TextView这种包含文字的控件,baseline是需要考虑到的。

再留张图以后做参考:

android中的AdapterView阅读_第2张图片

http://www.myfirstfont.com/glossary.html


onAttachedToWindow()和onDetachedFromWindow()

它们没有被写在Activity的生命周期中,初学的时候也没有上。onAttachedToWindow()会在第一次onResume()之后被调用,这是view刚刚获得canvas。onDetachedFromWindow()会在onDestroy()时被调用(可能是在后面),在调用时,已经没有canvas用了。Spinner中,onDetachedFromWindow()被用于销毁AlertDialog。我之前都在activity.onDestroy()中销毁对话框。可是View没有onDestroy方法,所以,如果需要在View中再添加AlertDialog,那只能在这里销毁了。回过头来,View.onAttachedToWindow相当于Activity.onCreate(),而View.onDetachedFromWindow()相当于View.onDetachedFromWindow()。View有个包级方法dispatchDetachedFromWindow()这里会调用onDetachedFromWindow(),也就是说,这个方法会被系统调用。activity的onAttachedFromWindow()和onDetachedFromWindow()中没有对view的相应方法进行调用。





你可能感兴趣的:(android,ListView,作业)