菜单项使用GridView实现,我们还需要设置每个菜单项的监听事件,在选中一项菜单后或是点击返回键或点击菜单键时实现隐藏,代码如下:
/**
* 设置菜单项监听事件
* @param gridView
*/
private void setMenuListener(GridView gridView){
if (null == gridView.getOnItemClickListener()){
gridView.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(
AdapterView<?> parent,
View view,
int position,
long id){
if (null != menuItemListener){
menuItemListener.onMenuItemClick(parent, view, position);
}
hide();
}
});
}
// 按返回键或菜单键隐藏菜单
gridView.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v, int keyCode, KeyEvent event){
if (event.getAction() == KeyEvent.ACTION_DOWN){
switch (keyCode){
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_MENU:
hide();
break;
}
}
return false;
}
});
}
在PulldownMenuView类中的show()和hide()方法中,主要是实现菜单的显示与隐藏。在show()方法中,要计算每行存放的菜单数、设置相应的高度、菜单整体的背景、动画效果、菜单显示的位置等效果。具体不再详述。
我们在显示下拉导航选择菜单前还需要配置菜单相应的参数,比如显示位置、背景图片、高度等。这就是在MenuUtility类中要实现的,代码如下:
package com.navigation.utility;
import com.navigation.acitvity.R;
import com.navigation.control.PulldownMenuView;
import android.content.Context;
import android.view.View;
/**
* PulldownMenuView基本操作类
* @Description: PulldownMenuView基本操作类
* @File: PulldownMenuUtility.java
* @Package com.navigation.utility
* @Author Hanyonglu
* @Date 2012-7-30 上午11:41:04
* @Version V1.0
*/
public class MenuUtility {
private Context context = null;
// PulldownMenuView对象
private PulldownMenuView menu = null;
// 图片资源
private int[] imageRes = null;
// 文字内容
private String[] texts = null;
// 菜单高度
private int height = 0;
private View anchorView = null;
/**
* 默认的构造器
*/
public MenuUtility() {
// TODO Auto-generated constructor stub
}
/**
* 带Context的构造器
* @param context
*/
public MenuUtility(Context context) {
// TODO Auto-generated constructor stub
this(context,null,null,0,null);
}
/**
* 带多参的构造器
* @param context
* @param imageRes
* @param texts
*/
public MenuUtility(Context context,int[] imageRes,String[] texts,int height,View anchorView){
this.context = context;
this.imageRes = imageRes;
this.texts = texts;
this.height = height;
this.anchorView = anchorView;
}
/**
* 设置图片资源
* @param imageRes
*/
public void setImageRes(int[] imageRes){
this.imageRes = imageRes;
}
/**
* 设置文字内容
* @param texts
*/
public void setTexts(String[] texts){
this.texts = texts;
}
/**
* 设置高度
* @param height
*/
public void setHeight(int height){
this.height = height;
}
/**
* 设置显示的位置
* @param anchor
*/
public void setAnchorView(View anchor){
anchorView = anchor;
}
/**
* 获取PulldownMenuView对象
* 以下拉的形式展现出来菜单
* @return
*/
public PulldownMenuView getPulldownMenuView(String currentItem){
PulldownMenuView menu = new PulldownMenuView(context);
menu.setImageRes(imageRes);
menu.setMenuText(texts);
menu.setHeight(height);
menu.setAnchorView(anchorView);
menu.setCurrentItem(currentItem);
menu.setBackground(R.drawable.navigation_bg);
return menu;
}
/**
* 获取PulldownMenuView对象
* 以向上弹出的方式展现出来菜单
* @return
*/
public PulldownMenuView getPopupMenuView(){
PulldownMenuView menu = new PulldownMenuView(context);
menu.setImageRes(imageRes);
menu.setMenuText(texts);
// menu.setLocation(Gravity.BOTTOM | Gravity.CENTER);
menu.setAnimStyle(R.style.pulldown_in_out);
menu.setBackground(R.drawable.navigation_bg);
return menu;
}
}










