android 弹框菜单,android 弹出式对话框实现自定义菜单栏

第一步:创建菜单项实体类(Menu)

/**

* 菜单栏选项类

*/

public class Menu {

//标题

private String title;

//Id(图片Id)

private int iconID;

public Menu(String title, int iconID) {

super();

this.title = title;

this.iconID = iconID;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public int getIconID() {

return iconID;

}

public void setIconID(int iconID) {

this.iconID = iconID;

}

}

第二步:创建弹出式窗口类(自定义菜单栏)---CustomMenu

package com.demo.custommenu;

import java.util.List;

import android.app.Activity;

import android.graphics.drawable.Drawable;

import android.view.KeyEvent;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.view.View.OnKeyListener;

import android.widget.BaseAdapter;

import android.widget.GridView;

import android.widget.ImageView;

import android.widget.PopupWindow;

import android.widget.TextView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.LinearLayout.LayoutParams;

/**

* 自定义弹出窗口继承PopupWindow

*/

public class CustomMenu extends PopupWindow {

//封装GridView组件

private GridView gvMenu;

//封装View 组件

private View view;

/**

* @param activity

* @param menus

*/

public CustomMenu(Activity activity, List menus) {

super(activity);

//View 样式文件R.layout.menu

view = activity.getLayoutInflater().inflate(R.layout.menu, null);

//实例化GridView组件

gvMenu = (GridView)view.findViewById(R.id.gv_menu);

//相关参数设置

this.setContentView(view);

this.setWidth(LayoutParams.FILL_PARENT);

this.setHeight(LayoutParams.WRAP_CONTENT);

//图片获取

Drawable drawable = activity.getResources().getDrawable(R.drawable.selector_focused_shape);

//相关特效设置

this.setBackgroundDrawable(drawable);

this.setAnimationStyle(R.style.PopupAnimation);

this.setFocusable(true);

//设置相关OnKeyListener事件

gvMenu.setOnKeyListener(new OnKeyListener() {

@Override

public boolean onKey(View v, int keyCode, KeyEvent event) {

if ((keyCode == KeyEvent.KEYCODE_MENU)&&(isShowing())) {

dismiss();//关闭PopupWindow弹出窗口

return true;

}

return false;

}

});

//自定义适配器--MenuAdapter

adapter = new MenuAdapter(activity, menus);

gvMenu.setAdapter(adapter);

}

//GridView 为每个Item设置监听事件方法

public void setMenuItemListener(OnItemClickListener menuClickListener) {

gvMenu.setOnItemClickListener(menuClickListener);

}

private MenuAdapter adapter;

public void dataUpdate() {

//数据设置进行相关的修改工作

adapter.notifyDataSetChanged();

}

/**

* 自定义适配器

*

*/

class MenuAdapter extends BaseAdapter {

private List

//自定义样式布局文件

private LayoutInflater layoutInflater;

/**

* ����TabMenu�ķ�ҳ����

* @param context ���÷���������

* @param texts ��ť���ϵ��ַ�����

* @param resID ��ť���ϵ�ͼ����Դ����

* @param fontSize ��ť�����С

* @param color ��ť������ɫ

*/

public MenuAdapter(Activity activity, List

this.menus = menus;

layoutInflater = LayoutInflater.from(activity);

}

@Override

public int getCount() {

return menus.size();

}

@Override

public Object getItem(int position) {

return menus.get(position) ;

}

@Override

public long getItemId(int position) {

return position;

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

MenuHolder holder = null;

if(convertView==null) {

convertView = layoutInflater.inflate(R.layout.item_menu, null);

holder = new MenuHolder();

holder.ivIcon = (ImageView)convertView.findViewById(R.id.iv_menu_item_icon);

holder.tvTitle = (TextView)convertView.findViewById(R.id.tv_menu_item_title);

convertView.setTag(holder);

}

else {

holder = (MenuHolder)convertView.getTag();

}

holder.ivIcon.setImageResource(menus.get(position).getIconID());

holder.tvTitle.setText(menus.get(position).getTitle());

return convertView;

}

class MenuHolder {

/**

* 图片组件

*/

public ImageView ivIcon;

/**

* 文本组件

*/

public TextView tvTitle;

}

}

}

第三步:修改Activity样式文件------BasicActivity

package com.demo.custommenu;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.os.Bundle;

import android.view.Gravity;

import android.view.Menu;

import android.widget.AdapterView.OnItemClickListener;

public class BaseActivity extends Activity {

//自定义弹出式菜单栏

private CustomMenu customMenu;

//样式组件

private int parentViewID;

private List menus;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

menus = new ArrayList();

customMenu = new CustomMenu(this, menus);

}

/**

* �

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值