本人因做一个项目,需要用到电子书中顶部与底部菜单,百度谷歌了很久,之前也有人遇到这此类问题,但是只得到一个答案,就是使用一个PopupWindow,实现.
说一下在实现这个功能的过程中遇到的问题,
1:最开始考虑在布局文件中写死两个菜单,利用布局对象的visible和gone属性加上animation动画来实现,后来否定了,因为不知道为什么 gone会失效,挡住前面一块,使底部的控件点击事件不能响应,
2:一直使用控件自身属性来实现设置动画数值,发现第一次显示一直不加载动画,后来发现,是第一次因为控件本身属性还未初始化.以前知道控件的这个问题,但是忽略了.后来才想起来问题所在.
/**
* onCreate之后获得控件宽高
*/
private int getViewHeight(View view) {
view.measure(View.MeasureSpec.makeMeasureSpec(0,
View.MeasureSpec.UNSPECIFIED), View.MeasureSpec
.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
return view.getMeasuredHeight();
}
3:后来使用两个PopupWindow来实现,发现PopupWindow中的很多问题,比如当前PopupWindow获得焦点后,当前窗体的Menu键是无法响应的.必须设置PopupWindow中的控件的onKeyListener()来解决 .而两个PoPupWindow如何同时弹出,又消失呢?这个貌似很难做到,因为太麻烦.
4:如何使用一个PopupWindow来同时弹出一个顶部菜单与底部菜单?在我们看来PopupWindow只是一个小窗体.而这个似乎中间还有空白的.
解决方案:这里只提供思路.具体代码.己在csdn上付分下载...同时也希望 大家多多动手,最近面试很多人,发现,工作了好几年,很多东西只会用,或者copy,
首先定义一个布局对象
可能看到这个,大家心里就有点思路了,其实就是这样子的,将整个布局addView进PopupWindow内,然后 通过View.inflate将title与bottom的view对象获取.
再设置其显示与隐藏的动画就可以了.
另外,中间的空白区域有一个很大的好处,就是可以设置其点击事件,然后隐藏该PopupWindow对象.这给人的感觉就像是点击了外面的控件,就自动隐藏了顶部与底部的控件一样.
如果大家想要下载:http://download.csdn.net/detail/csmco/6423465 我设的分比较高,因