package com.android.Mylauncher2;
import java.util.List;
import com.android.Mylauncher.R;
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;
/**
* �Զ�����ʽ�˵�
*/
public class CustomedMenu extends PopupWindow {
private GridView gvMenu;
private View view;
public static final int MENU_ADD = 0;
public static final int MENU_ITEM_EDIT_SCREEN = 1;
public static final int MENU_ITEM_LAUNCHER_THEME = 2;
public static final int MENU_ITEM_WALLPAPER = 3;
public static final int MENU_ITEM_SYSTEM_SETTINGS = 4;
public static final int MENU_ITEM_LAUNCHER_SETTINGS = 5;
/**
* @param activity
* @param menus
*/
public CustomedMenu(Activity activity, List<CustomedMenuItem> menus) {
super(activity);
view = activity.getLayoutInflater().inflate(R.layout.menu, null);
//��ѡ����
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);// menu�˵���ý��� ���û�л�ý���menu�˵��еĿؼ��¼�����Ӧ
//���menu��ť popup����ʧ����
gvMenu.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_MENU)&&(isShowing())) {
dismiss();// ����д��ģ��menu��PopupWindow�˳�����
return true;
}
return false;
}
});
adapter = new MenuAdapter(activity, menus);
gvMenu.setAdapter(adapter);
}
public void setMenuItemListener(OnItemClickListener menuClickListener) {
gvMenu.setOnItemClickListener(menuClickListener);
}
private MenuAdapter adapter;
public void dataUpdate() {
adapter.notifyDataSetChanged();
}
/**
* �Զ���Adapter
*
*/
class MenuAdapter extends BaseAdapter {
private List<CustomedMenuItem> menus;
//������ת����View����
private LayoutInflater layoutInflater;
/**
* ����TabMenu�ķ�ҳ����
* @param context ���÷���������
* @param texts ��ť���ϵ��ַ�����
* @param resID ��ť���ϵ�ͼ����Դ����
* @param fontSize ��ť�����С
* @param color ��ť������ɫ
*/
public MenuAdapter(Activity activity, List<CustomedMenuItem> menus) {
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 {
/**
* �˵�itemͼ��
*/
public ImageView ivIcon;
/**
* �˵�item���
*/
public TextView tvTitle;
}
}
}