首页 > 代码库 > 【转】微信中MMAlert(半透明底部弹出菜单)的使用介绍
【转】微信中MMAlert(半透明底部弹出菜单)的使用介绍
果大家时常用过微信或者用过iphone,就会发现有种从底部弹出的半透明菜单,这种菜单风格优美并且用户体验良好,先看一下效果。
MMAlert来自微信开放平台的sdk示例,其示例的代码有点乱,我做了删减和整理,只保留了MMAlert这个类的一部分功能,即只保留了实现上述效果的那个函数,因为其他函数比较简单,就是普通的AlertDialog,我觉得大家都懂,所以直接删掉了。
代码介绍
1 . 下面这段代码其实蛮好理解的,本质就是new一个对话框,然后将其放置在底部,为其设置theme和style,theme和style写的蛮好理解的, 具体大家可以看源码。数据呈现用的是Listview,为此我们需要new一个BaseAdapter对象来管理数据,BaseAdapter没什么特殊 之处,很好理解,具体请看代码。
1 /** 2 * @param context 3 * Context. 4 * @param title 5 * The title of this AlertDialog can be null . 6 * @param items 7 * button name list. 8 * @param alertDo 9 * methods call Id:Button + cancel_Button.10 * @param exit11 * Name can be null.It will be Red Color12 * @return A AlertDialog13 */14 public static Dialog showAlert(final Context context, final String title, final String[] items, String exit, 15 final OnAlertSelectId alertDo, OnCancelListener cancelListener)16 {17 String cancel = context.getString(R.string.app_cancel);18 final Dialog dlg = new Dialog(context, R.style.MMTheme_DataSheet);19 LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);20 LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.alert_dialog_menu_layout, null);21 final int cFullFillWidth = 10000;22 layout.setMinimumWidth(cFullFillWidth);23 final ListView list = (ListView) layout.findViewById(R.id.content_list);24 AlertAdapter adapter = new AlertAdapter(context, title, items, exit, cancel);25 list.setAdapter(adapter);26 list.setDividerHeight(0);27 28 list.setOnItemClickListener(new OnItemClickListener(){29 @Override30 public void onItemClick(AdapterView<?> parent, View view, int position, long id)31 {32 if (!(title == null || title.equals("")) && position - 1 >= 0)33 {34 alertDo.onClick(position - 1);35 dlg.dismiss();36 list.requestFocus();37 }38 else39 {40 alertDo.onClick(position);41 dlg.dismiss();42 list.requestFocus();43 }44 45 }46 });47 // set a large value put it in bottom48 Window w = dlg.getWindow();49 WindowManager.LayoutParams lp = w.getAttributes();50 lp.x = 0;51 final int cMakeBottom = -1000;52 lp.y = cMakeBottom;53 lp.gravity = Gravity.BOTTOM;54 dlg.onWindowAttributesChanged(lp);55 dlg.setCanceledOnTouchOutside(true);56 if (cancelListener != null)57 dlg.setOnCancelListener(cancelListener);58 59 dlg.setContentView(layout);60 dlg.show();61 62 return dlg;63 }
2. 如何使用MMAlert?很简单!
1 findViewById(R.id.send_img).setOnClickListener(new View.OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 MMAlert.showAlert(SendToWXActivity.this, getString(R.string.send_img), 6 SendToWXActivity.this.getResources().getStringArray(R.array.send_img_item), 7 null, new MMAlert.OnAlertSelectId(){ 8 9 @Override10 public void onClick(int whichButton) { 11 switch(whichButton){12 case MMAlertSelect1: {13 14 break;15 }16 case MMAlertSelect2: {17 18 break;19 }20 case MMAlertSelect3: {21 22 break;23 }24 default:25 break;26 }27 }28 29 });30 }31 });
代码下载
http://download.csdn.net/detail/singwhatiwanna/5338394
下载地址二:
http://pan.baidu.com/s/1i3l82eL
【转】微信中MMAlert(半透明底部弹出菜单)的使用介绍
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。