工程目录:src\ch06\ch06_ucweb_menu
可能有很多读者使用过Android版的UCWeb(也称为UC浏览器)。在UCWeb的主界面可以弹出包含很多图像的菜单,如图6.10所示。广州网站建设
![]() |
| 图6.10 UCWeb主界面 |
广州网站设计
- package mobile.android.ch06_ucweb.menu;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Gravity;
- import android.view.KeyEvent;
- import android.view.Menu;
- import android.view.View;
- import android.view.View.OnKeyListener;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.GridView;
- import android.widget.PopupWindow;
- import android.widget.Toast;
- public class Main extends Activity implements OnKeyListener,OnItemClickListener
- {
- private PopupWindow popup;
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 创建在弹出窗口中显示的GridView对象
- GridView gvPopupWindow = (GridView) getLayoutInflater().inflate(R.layout.popup_
- window, null);
- // 为GridView提供数据的Adapter对象
- GridAdapter gridAdapter = new GridAdapter(this);
- gvPopupWindow.setAdapter(gridAdapter);
- gvPopupWindow.setOnKeyListener(this);
- gvPopupWindow.setOnItemClickListener(this);
- // 创建用于显示菜单的PopupWindow对象。菜单是通过GridView对象显示网格状图像和文字
- popup = new PopupWindow(gvPopupWindow, LayoutParams.FILL_PARENT,
- LayoutParams.WRAP_CONTENT);
- // 使PopupWindow可以获得焦点,以便可以通过轨迹球或上、下、左、右键来控制菜单项
- popup.setFocusable(true);
- }
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id)
- {
- // 当单击GridView中的每一项时,先关闭弹出窗口,然后显示一条提示信息
- popup.dismiss();
- Toast.makeText(this, Const.GRID_ITEM_TEXT_LIST[position], Toast.LENGTH_LONG).show();
- }
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event)
- {
- switch (keyCode)
- {
- case KeyEvent.KEYCODE_BACK:
- // 捕捉Back键。如果窗口已经显示,关闭它
- if(popup.isShowing())
- popup.dismiss();
- break;
- }
- return false;
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu)
- {
- // 必须创建一项,否则系统不会调用onMenuOpened方法
- menu.add("menu");
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onMenuOpened(int featureId, Menu menu)
- {
- if (popup != null)
- {
- if (popup.isShowing())
- {
- // 如果菜单已显示,关闭它
- popup.dismiss();
- }
- else
- {
- View layout = getLayoutInflater().inflate(R.layout.main, null);
- // 弹出菜单
- popup.showAtLocation(layout, Gravity.CENTER, 0, 0);
- }
- }
- return false;
- }
- }




