首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

Android自定义menu的兑现

2012-08-13 
Android自定义menu的实现?public class MainAcvtivity extends Activity {private int[] nameArr new in

Android自定义menu的实现

?

public class MainAcvtivity extends Activity {   private int[] nameArr = new int[]{R.string.menu1,R.string.menu2,R.string.menu3,R.string.menu4};   private int[] imageArr = new int[]{R.drawable.menu1,R.drawable.menu2,R.drawable.menu3,R.drawable.menu4};   private  MyMenu myMenu;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        initMenu();    }    private void initMenu(){          myMenu = new MyMenu(this, nameArr, imageArr, 4) {  @Override public void OnItemClick(int viewId) { switch (viewId) {case R.string.menu1:Toast.makeText(MainAcvtivity.this,getString(R.string.menu1), Toast.LENGTH_SHORT).show();break;case R.string.menu2:Toast.makeText(MainAcvtivity.this,getString(R.string.menu2), Toast.LENGTH_SHORT).show();break;case R.string.menu3:Toast.makeText(MainAcvtivity.this,getString(R.string.menu3), Toast.LENGTH_SHORT).show();break;case R.string.menu4:Toast.makeText(MainAcvtivity.this,getString(R.string.menu4), Toast.LENGTH_SHORT).show();break;} myMenu.menuDismiss(); } };    }@Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add("menu");return super.onCreateOptionsMenu(menu);}@Overridepublic boolean onMenuOpened(int featureId, Menu menu) {myMenu.showMenu(findViewById(R.id.main));return false;}public abstract class MyMenu{private MainAcvtivity AbsActivity;private int[] nameArr;private int[] imageArr;private int count;private PopupWindow mPopupWindow;private ViewFlipper mViewFlipper;private List<Map<String, Object>> data = new ArrayList<Map<String,Object>>();public MyMenu(MainAcvtivity activity,int[] nameArr,int[] imageArr,int count){this.AbsActivity = activity;    this.nameArr = nameArr;    this.imageArr = imageArr;    this.count = count;     initMenu();}    public void initMenu(){    mViewFlipper = new ViewFlipper(AbsActivity);    LinearLayout mLinearLayout = (LinearLayout) AbsActivity.getLayoutInflater().inflate(R.layout.menu_view, null);    mViewFlipper.addView(mLinearLayout);    mViewFlipper.setFlipInterval(1000000);    GridView mGridView = (GridView) mLinearLayout.findViewById(R.id.menu_gridview);    mGridView.setNumColumns(count);    mPopupWindow = new PopupWindow(mViewFlipper, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);    mPopupWindow.setBackgroundDrawable(new BitmapDrawable());    mPopupWindow.setFocusable(true);    mPopupWindow.update();    for (int i = 0; i < nameArr.length; i++) {Map<String, Object> map = new HashMap<String, Object>();map.put("itemIamge", imageArr[i]);map.put("itemText", AbsActivity.getString(nameArr[i]));map.put("key", nameArr[i]);data.add(map);}    BaseAdapter adapter = new SimpleAdapter(AbsActivity, data, R.layout.menu_item, new String[]{"itemIamge","itemText"},     new int[]{R.id.menu_item_image,R.id.menu_item_text});    mGridView.setAdapter(adapter);    mGridView.setOnKeyListener(new OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if(keyCode == KeyEvent.KEYCODE_MENU){if(mPopupWindow != null){mPopupWindow.dismiss();}}return false;}});    mGridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {int key = Integer.parseInt( data.get(position).get("key").toString());OnItemClick(key);}});    }    public void showMenu(View view){    if(mPopupWindow != null){    if(mPopupWindow.isShowing()){    mPopupWindow.dismiss();    }else{    mPopupWindow.getContentView().setEnabled(true);    mPopupWindow.showAtLocation(view, Gravity.BOTTOM, 0, 0);    mViewFlipper.startFlipping();    }    }    }    public void menuDismiss(){    if(mPopupWindow !=null && mPopupWindow.isShowing()){    mPopupWindow.dismiss();    }    }public abstract void OnItemClick(int viewId);}

热点排行