新建项目:
项目结构:
drawable-hdpi文件夹中的图片是自己加入的。主要是在菜单选项中显示的图片:
运行效果:
代码部分:
main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<!-- 菜单选项的布局,设置高为"65sp",位置是在父窗口的底部,设置为不可见-->
<GridView
android:id="@+id/gv_buttom_menu"
android:layout_width="fill_parent"
android:layout_height="65sp"
android:layout_alignParentBottom="true"
android:visibility="gone"
></GridView>
</RelativeLayout>
item_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="5dip"
>
<!-- 这个布局文件是用来布局菜单选项的 -->
<!-- 菜单中图片的显示 -->
<ImageView
android:id="@+id/item_image"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
></ImageView>
<!-- 菜单中图片下面的文字 -->
<TextView
android:id="@+id/item_text"
android:layout_below="@id/item_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
></TextView>
</RelativeLayout>
MainActivity.java
package com.b510;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
import android.widget.GridView;
import android.widget.SimpleAdapter;
public class MainActivity extends Activity {
/** 定义底部菜单选项 */
GridView gv_buttom_menu;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
* 当按键被按下的时候调用此方法
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
if (gv_buttom_menu == null) {
loadButtomMenu();
}
// 默认情况下面是View.GONE
if (gv_buttom_menu.getVisibility() == View.GONE) {
gv_buttom_menu.setVisibility(View.VISIBLE);// 菜单设置可见
} else {
gv_buttom_menu.setVisibility(View.GONE);// 菜单设置不可见
}
}
return super.onKeyDown(keyCode, event);
}
/**
* 加载菜单
*/
private void loadButtomMenu() {
gv_buttom_menu = (GridView) findViewById(R.id.gv_buttom_menu);
// 设置菜单选项的背景图片
gv_buttom_menu.setBackgroundResource(R.drawable.channelgallery_bg);
// 设置列数,为5列
gv_buttom_menu.setNumColumns(5);
// 设置位置
gv_buttom_menu.setGravity(Gravity.CENTER);
// 垂直间隔10
gv_buttom_menu.setVerticalSpacing(10);
// 水平间隔10
gv_buttom_menu.setHorizontalSpacing(10);
ArrayList data = new ArrayList();
// 定义菜单选项的图片和文字
// 增加菜单
HashMap map = new HashMap();
map.put("itemImage", R.drawable.menu_new_user);
map.put("itemText", "增加");
data.add(map);
// 查找菜单
map = new HashMap();
map.put("itemImage", R.drawable.menu_search);
map.put("itemText", "查找");
data.add(map);
// 删除菜单
map = new HashMap();
map.put("itemImage", R.drawable.menu_delete);
map.put("itemText", "删除");
data.add(map);
// 菜单选项
map = new HashMap();
map.put("itemImage", R.drawable.controlbar_showtype_list);
map.put("itemText", "菜单");
data.add(map);
// 退出菜单
map = new HashMap();
map.put("itemImage", R.drawable.menu_exit);
map.put("itemText", "退出");
data.add(map);
// 设置SimpleAdapter
// 1.Context 上下文
// 2.data 是菜单中显示数据信息,包括图片和说明文字
// 3.R.layout.item_ment 从data中取出数据map类型,用此布局文件来展示数据信息,包括图片和说明文字
// 4,5 是将data和布局文件联系起来
// 4 放入map中的key值
// 5 按照map中的key值,把相应的数据传递过来,最后展现出来
SimpleAdapter adapter = new SimpleAdapter(this, data,
R.layout.item_menu, new String[] { "itemImage", "itemText" },
new int[] { R.id.item_image, R.id.item_text });
// gv_buttom_menu只是负责展现,他是没有数据的
// adapter是把展现方式和数据联系在一起的一种工具,按照某种特定方式展现出来
gv_buttom_menu.setAdapter(adapter);
}
}