1 package com.lixu.menu2;
  2 
  3 import java.util.ArrayList;
  4 import android.app.Activity;
  5 import android.app.AlertDialog;
  6 import android.content.Context;
  7 import android.content.DialogInterface;
  8 import android.content.DialogInterface.OnClickListener;
  9 import android.content.DialogInterface.OnMultiChoiceClickListener;
 10 import android.os.Bundle;
 11 import android.view.ContextMenu;
 12 import android.view.Menu;
 13 import android.view.MenuItem;
 14 import android.view.View;
 15 import android.view.ViewGroup;
 16 import android.view.ContextMenu.ContextMenuInfo;
 17 import android.view.LayoutInflater;
 18 import android.widget.AdapterView;
 19 import android.widget.AdapterView.AdapterContextMenuInfo;
 20 import android.widget.AdapterView.OnItemClickListener;
 21 import android.widget.AdapterView.OnItemSelectedListener;
 22 import android.widget.ArrayAdapter;
 23 import android.widget.ImageView;
 24 import android.widget.ListView;
 25 import android.widget.TextView;
 26 import android.widget.Toast;
 27 
 28 public class MainActivity extends Activity {
 29     private ArrayList<String> data;
 30     private ArrayAdapter<String> mAdapter;
 31     private ArrayAdapter<String> mAdapter1;
 32     private Activity context;
 33 
 34     @Override
 35     protected void onCreate(Bundle savedInstanceState) {
 36         super.onCreate(savedInstanceState);
 37         setContentView(R.layout.activity_main);
 38 
 39         context = this;
 40         data = new ArrayList<String>();
 41         for (int i = 0; i < 20; i++)
 42             data.add("大神" + i);
 43 
 44         ListView lv = (ListView) findViewById(R.id.listview);
 45         mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data);
 46 
 47         lv.setAdapter(mAdapter);
 48         lv.setOnCreateContextMenuListener(this);
 49 
 50     }
 51 
 52     // 创建右上角点击下拉菜单
 53     @Override
 54     public boolean onCreateOptionsMenu(Menu menu) {
 55         getMenuInflater().inflate(R.menu.main, menu);
 56         return true;
 57     }
 58 
 59     // 创建界面长按点击弹出菜单的点击事件
 60     @Override
 61     public boolean onContextItemSelected(MenuItem item) {
 62         AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
 63         final int pos = info.position;
 64         switch (item.getItemId()) {
 65         case 1001:
 66             Toast.makeText(this, "亲,这条消息未读哦!", 0).show();
 67             break;
 68         case 1002:
 69             // 对话提示选择框
 70             AlertDialog dialog = new AlertDialog.Builder(this).create();
 71             dialog.setTitle("对话框");
 72             dialog.setIcon(R.drawable.ic_launcher);
 73             dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确认", new DialogInterface.OnClickListener() {
 74 
 75                 @Override
 76                 public void onClick(DialogInterface dialog, int which) {
 77                     String s = data.get(pos);
 78 
 79                     data.remove(pos);
 80                     data.add(0, s);
 81 
 82                     mAdapter.notifyDataSetChanged();
 83 
 84                     Toast.makeText(getApplicationContext(), "聊天已置顶!", 0).show();
 85                 }
 86             });
 87 
 88             dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
 89 
 90                 @Override
 91                 public void onClick(DialogInterface dialog, int which) {
 92                     String s = data.get(pos);
 93 
 94                     Toast.makeText(getApplicationContext(), "已取消!", 0).show();
 95                 }
 96             });
 97             dialog.show();
 98 
 99             break;
100         case 1003:
101             // 对话提示选择框
102             AlertDialog dialog1 = new AlertDialog.Builder(this).create();
103             dialog1.setTitle("对话框");
104             dialog1.setIcon(R.drawable.ic_launcher);
105             dialog1.setButton(DialogInterface.BUTTON_POSITIVE, "确认", new DialogInterface.OnClickListener() {
106 
107                 @Override
108                 public void onClick(DialogInterface dialog, int which) {
109                     String s = data.get(pos);
110 
111                     data.remove(pos);
112                     mAdapter.notifyDataSetChanged();
113                     Toast.makeText(getApplicationContext(), "已删除!", 0).show();
114 
115                 }
116             });
117 
118             dialog1.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
119 
120                 @Override
121                 public void onClick(DialogInterface dialog, int which) {
122 
123                     Toast.makeText(getApplicationContext(), "已取消!", 0).show();
124                 }
125             });
126             dialog1.show();
127             break;
128 
129         case 1004:
130             // 单项选择对话框
131             final String[] items = { "转发到QQ空间", "转发到微信朋友圈", "转发到新浪微博" };
132 
133             AlertDialog.Builder dialog2 = new AlertDialog.Builder(this);
134             dialog2.setTitle("转发");
135             dialog2.setIcon(R.drawable.ic_launcher);
136             // 0 代表初始选择 "转发到QQ空间"
137             dialog2.setSingleChoiceItems(items, 0, new OnClickListener() {
138 
139                 @Override
140                 public void onClick(DialogInterface dialog, int which) {
141                     // 处理自己的逻辑运算
142                     Toast.makeText(getApplicationContext(), "已" + items[which] + "!", Toast.LENGTH_SHORT).show();
143                     dialog.dismiss();
144 
145                 }
146             });
147 
148             dialog2.create().show();
149 
150             break;
151         case 1005:
152             // 多项选择对话框
153             final String[] items1 = { "同时转发到QQ空间", "同时转发到微信朋友圈", "同时转发到新浪微博" };
154 
155             AlertDialog.Builder dialog3 = new AlertDialog.Builder(this);
156 
157             dialog3.setIcon(R.drawable.ic_launcher);
158             dialog3.setTitle("多项转发");
159             final boolean[] checkedItems = { false, false, false };
160             // 点击选择事件来改变boolean数组里面的值
161             dialog3.setMultiChoiceItems(items1, checkedItems, new OnMultiChoiceClickListener() {
162 
163                 @Override
164                 public void onClick(DialogInterface dialog, int which, boolean isChecked) {
165 
166                 }
167             });
168             AlertDialog mdialog = dialog3.create();
169             mdialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", new OnClickListener() {
170 
171                 @Override
172                 public void onClick(DialogInterface dialog, int which) {
173                     String s = "";
174                     // 将boolean数组进行遍历
175                     for (int i = 0; i < checkedItems.length; i++) {
176                         // 当boolean数组里面值为true时 证明被选中 后添加入s
177                         if (checkedItems[i])
178                             s += items1[i] + "\n";
179                     }
180 
181                     Toast.makeText(getApplicationContext(), s, Toast.LENGTH_SHORT).show();
182 
183                 }
184             });
185             mdialog.show();
186             break;
187 
188         case 1006:
189             // 设置自定义的弹出框布局 这里用到listview 这里找到布局不能直接findViewById
190             // 要从getLayoutInflater().inflate(R.layout.listview, null);这样得到
191             View view = getLayoutInflater().inflate(R.layout.listview, null);
192 
193             ListView lv1 = (ListView) view.findViewById(R.id.listview2);
194 
195             // 添加数据
196             String[] s = new String[50];
197             for (int i = 0; i < s.length; i++)
198                 s[i] = "数据" + i;
199             mAdapter1 = new MyAdapter(this, -1, s);
200 
201             lv1.setAdapter(mAdapter1);
202 
203             AlertDialog.Builder dialog4 = new AlertDialog.Builder(this);
204 
205             dialog4.setTitle("列表");
206             // 设置布局
207             dialog4.setView(view);
208 
209             dialog4.create().show();
210             lv1.setOnItemClickListener(new OnItemClickListener() {
211 
212                 @Override
213                 public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long arg3) {
214 
215                     Toast.makeText(getApplicationContext(), "您选择了" + pos, Toast.LENGTH_SHORT).show();
216 
217                 }
218             });
219 
220             break;
221 
222         case 1007:
223             context.openOptionsMenu();
224             break;
225 
226         default:
227             break;
228 
229         }
230         return super.onContextItemSelected(item);
231     }
232 
233     private class MyAdapter extends ArrayAdapter<String> {
234         private LayoutInflater flater;
235         private String[] s;
236 
237         public MyAdapter(Context context, int resource, String[] s) {
238             super(context, resource);
239             this.s = s;
240             flater = LayoutInflater.from(context);
241 
242         }
243 
244         @Override
245         public View getView(int position, View convertView, ViewGroup parent) {
246             if (convertView == null)
247                 convertView = flater.inflate(R.layout.list, null);
248 
249             ImageView iv = (ImageView) convertView.findViewById(R.id.iv);
250             iv.setImageResource(R.drawable.dfdf);
251             TextView tv = (TextView) convertView.findViewById(R.id.tv);
252             tv.setText(s[position]);
253 
254             return convertView;
255         }
256 
257         @Override
258         public int getCount() {
259             return s.length;
260         }
261 
262     }
263 
264     // 创建界面长按点击弹出菜单
265     @Override
266     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
267         super.onCreateContextMenu(menu, v, menuInfo);
268         menu.add(0, 1001, 101, "标记为未读");
269         menu.add(0, 1002, 102, "置顶聊天");
270         menu.add(0, 1003, 103, "删除该聊天");
271         menu.add(0, 1004, 104, "转发到:");
272         menu.add(0, 1005, 105, "同时转发到:");
273         menu.add(0, 1006, 106, "listview:");
274         menu.add(0, 1007, 107, "打开设置");
275 
276     }
277 
278     // 创建右上角点击下拉菜单的点击事件
279     @Override
280     public boolean onOptionsItemSelected(MenuItem item) {
281         int id = item.getItemId();
282         switch (id) {
283         case R.id.action_settings:
284             // 多选对话框
285             String[] items = { "音量", "亮度", "背景" };
286             AlertDialog dialog = new AlertDialog.Builder(this).setItems(items, new OnClickListener() {
287 
288                 @Override
289                 public void onClick(DialogInterface dialog, int which) {
290 
291                     switch (which) {
292                     case 0:
293                         Toast.makeText(getApplicationContext(), "音量设置完成!", 0).show();
294                         break;
295                     case 1:
296                         Toast.makeText(getApplicationContext(), "亮度设置完成!", 0).show();
297                         break;
298                     case 2:
299                         Toast.makeText(getApplicationContext(), "背景设置完成!", 0).show();
300                         break;
301 
302                     default:
303                         break;
304                     }
305 
306                 }
307             }).create();
308             dialog.setTitle("设置");
309             dialog.setIcon(R.drawable.ic_launcher);
310 
311             dialog.show();
312 
313             break;
314         case R.id.action_about:
315             Toast.makeText(getApplicationContext(), "作者:木子小新", 1).show();
316             break;
317         case R.id.action_open:
318             String[] items1 = { "新建", "打开" };
319             AlertDialog dialog1 = new AlertDialog.Builder(this).setItems(items1, new OnClickListener() {
320 
321                 @Override
322                 public void onClick(DialogInterface dialog, int which) {
323 
324                     switch (which) {
325                     case 0:
326                         Toast.makeText(getApplicationContext(), "新建完成!", 0).show();
327                         break;
328                     case 1:
329                         Toast.makeText(getApplicationContext(), "打开完成!", 0).show();
330                         break;
331 
332                     default:
333                         break;
334                     }
335 
336                 }
337             }).create();
338             dialog1.setTitle("文件");
339             dialog1.setIcon(R.drawable.ic_launcher);
340 
341             dialog1.show();
342 
343             break;
344         case R.id.action_file:
345             Toast.makeText(this, "亲,你懂的。", 0).show();
346             break;
347 
348         default:
349             break;
350         }
351         return super.onOptionsItemSelected(item);
352     }
353 }

 

xml——menu文件:

 1 <menu xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     tools:context="com.lixu.menu2.MainActivity" >
 4 
 5     <item
 6         android:id="@+id/action_settings"
 7         android:orderInCategory="103"
 8         android:showAsAction="never"
 9         android:title="设置"/>
10     <item
11         android:id="@+id/action_about"
12         android:orderInCategory="104"
13         android:showAsAction="never"
14         android:title="关于"/>
15     <item
16         android:id="@+id/action_file"
17         android:orderInCategory="102"
18         android:showAsAction="never"
19         android:title="文件"/>
20     <item
21         android:id="@+id/action_open"
22         android:orderInCategory="101"
23         android:showAsAction="never"
24         android:title="打开"
25         />
26 
27 </menu>

运行效果图:

posted on 2015-12-11 14:08  0代码狂人0  阅读(1428)  评论(0编辑  收藏  举报