package com.myandroid.test;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MyMenu extends Activity {
private List<String> titles; //标题栏
private List<List<String>> item_names; //选项名称
private List<List<Integer>> item_images; //选项图标
private MyDefinedMenu myMenu; //弹出菜单
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//弹出菜单标题栏
titles = addItems(new String[]{"菜单一", "菜单二", "菜单三"});
//选项图标
item_images = new ArrayList<List<Integer>>();
item_images.add(addItems(new Integer[]{R.drawable.bag,
R.drawable.bluetooth, R.drawable.earth, R.drawable.email}));
item_images.add(addItems(new Integer[]{R.drawable.map,
R.drawable.news, R.drawable.reader, R.drawable.sound, R.drawable.tape}));
item_images.add( addItems(new Integer[]{R.drawable.telephone,
R.drawable.bluetooth, R.drawable.earth, R.drawable.email}));
//选项名称
item_names = new ArrayList<List<String>>();
item_names.add(addItems(new String[]{"购物", "蓝牙", "游览器", "邮件"}));
item_names.add(addItems(new String[]{"地图", "新闻", "阅读器", "音箱", "录音"}));
item_names.add(addItems(new String[]{"电话", "蓝牙", "阅读器", "邮箱"}));
//创建弹出菜单对象
myMenu = new MyDefinedMenu(this, titles, item_names,
item_images, new ItemClickEvent());
}
/**
* 转换为List<String>
* @param values
* @return
*/
private List<String> addItems(String[] values) {
List<String> list = new ArrayList<String>();
for (String var : values) {
list.add(var);
}
return list;
}
/**
* 转换为List<Integer>
* @param values
* @return
*/
private List<Integer> addItems(Integer[] values) {
List<Integer> list = new ArrayList<Integer>();
for (Integer var : values) {
list.add(var);
}
return list;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add("menu");
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onMenuOpened(int featureId, Menu menu) {
if(0 == myMenu.currentState && myMenu.isShowing()) {
Log.e("isShowing:", "" + myMenu.isShowing());
myMenu.dismiss(); //对话框消失
myMenu.currentState = 1; //标记状态,已消失
Log.e("MenuState:", "dismissing");
} else {
myMenu.showAtLocation(findViewById(R.id.layout), Gravity.BOTTOM, 0,0);
Log.e("isShowing:", "" + myMenu.isShowing());
myMenu.currentState = 0; //标记状态,显示中
Log.e("MenuState:", "showing");
}
return false; // true--显示系统自带菜单;false--不显示。
}
@Override
public void closeOptionsMenu() {
// TODO Auto-generated method stub
super.closeOptionsMenu();
Log.e("MenuState:", "closeOptionsMenu");
}
@Override
public void onOptionsMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onOptionsMenuClosed(menu);
Log.e("MenuState:", "onOptionsMenuClosed");
}
/**
* 菜单选项点击事件
* @author Kobi
*
*/
class ItemClickEvent implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//显示点击的是哪个菜单哪个选项。
Toast.makeText(MyMenu.this, "Menu: " +
titles.get(myMenu.getTitleIndex()) +
" Item: " + item_names.get(myMenu.getTitleIndex()).get(arg2),
Toast.LENGTH_SHORT).show();
myMenu.dismiss(); //菜单消失
myMenu.currentState = 1; //标记状态,已消失
Log.e("MenuState:", "dismissing");
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.e("Activity:", "onPause");
}
@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.e("Activity:", "onRestart");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.e("Activity:", "onResume");
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Android之用PopupWindow实现弹出菜单
共42个文件
png:15个
class:12个
java:5个
5星 · 超过95%的资源 需积分: 46 1.5k 下载量 157 浏览量
2011-05-13
14:05:28
上传
评论 10
收藏 998KB RAR 举报
温馨提示
在使用UC-WebBrowser时,你会发现它的弹出菜单跟系统自带的菜单不一样。它实现更多菜单选项的显示和分栏。其实,它的本身是PopupWindow或者是AlertDialog对话框,在里面添加两个GridView控件,一个是菜单标题栏,一个是菜单选项。菜单选项视图的切换可以通过适配器的变换,轻松地实现。
资源推荐
资源详情
资源评论
收起资源包目录
MyMenu.rar (42个子文件)
MyMenu
.project 842B
default.properties 362B
bin
MyMenu.apk 350KB
com
myandroid
test
R$string.class 427B
MyMenu$ItemClickEvent.class 2KB
R$layout.class 394B
MyMenu.class 5KB
MyDefinedMenu.class 4KB
R$drawable.class 798B
TitleAdatper.class 2KB
BodyAdatper.class 2KB
MyDefinedMenu$1.class 2KB
R.class 531B
R$attr.class 340B
R$id.class 384B
resources.ap_ 342KB
classes.dex 11KB
proguard.cfg 1KB
AndroidManifest.xml 679B
src
com
myandroid
test
TitleAdatper.java 2KB
MyDefinedMenu.java 3KB
MyMenu.java 4KB
BodyAdatper.java 2KB
res
values
strings.xml 163B
layout
main.xml 274B
drawable
set.png 36KB
a3.png 33KB
earth.png 31KB
map.png 24KB
bag.png 18KB
telephone.png 14KB
bluetooth.png 33KB
news.png 28KB
a1.png 40KB
a2.png 33KB
tape.png 14KB
reader.png 19KB
sound.png 22KB
icon.png 3KB
email.png 17KB
.classpath 280B
gen
com
myandroid
test
R.java 1KB
assets
共 42 条
- 1
kkfdsa132
- 粉丝: 223
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页