Android如何实现uc浏览器一样的菜单

移动开发 Android
菜单开发也是程序员经常需要关注的,如何使菜单变得更加方便用户使用是每一个开发者都要面临的实际问题,今天给Android开发者介绍一下如何开发出像UC浏览器一样的菜单。使用AlertDialog生成菜单,利用setView()方法设置菜单视图。

菜单开发也是程序员经常需要关注的,如何使菜单变得更加方便用户使用是每一个开发者都要面临的实际问题,今天给Android开发者介绍一下如何开发出像UC浏览器一样的菜单。使用AlertDialog生成菜单,利用setView()方法设置菜单视图。

布局如下:

1、菜单布局

利用GridView

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width
="wrap_content" android:layout_height="wrap_content"  
    android:orientation
="vertical">  
    
<GridView android:id="@+id/menu"  
        android:layout_width
="fill_parent"  
        android:layout_height
="fill_parent"  
        android:numColumns
="2"  
         android:verticalSpacing
="5dip"  
         android:horizontalSpacing
="5dip"  
         android:stretchMode
="columnWidth"  
         android:gravity
="center"></GridView>  
</LinearLayout>  

2、每一个item的布局

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:id
="@+id/RelativeLayout_Item" android:layout_width="wrap_content"  
    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:layout_below="@id/item_image" android:id="@+id/item_text"  
        android:layout_centerHorizontal
="true" android:layout_width="wrap_content"  
        android:layout_height
="wrap_content" android:text="选项"></TextView>  
</RelativeLayout>  

主程序代码如下:

代码比较简单,注释非常详细

package com.cloay.down.utils;  
  
import java.util.ArrayList;  
import java.util.HashMap;  
  
import com.cloay.down.R;  
  
import android.app.AlertDialog;  
import android.content.Context;  
import android.view.View;  
import android.widget.AdapterView;  
import android.widget.AdapterView.OnItemClickListener;  
import android.widget.GridView;  
import android.widget.SimpleAdapter;  
/** 
* 菜单工具类 
* MenuUtil.java 
* @author cloay 
* 2011-10-25 
*/  
public class MenuUtil {  
    
private static AlertDialog menuDialog;// menu菜单Dialog  
    
private static GridView menuGrid;  
      
    
/** 菜单图片 **/  
    static 
int[] menu_image_array = { R.drawable.menu_open_in_background, R.drawable.menu_redownload, R.drawable.menu_detail, R.drawable.menu_delete };  
    
/** 菜单文字 **/  
    static 
String[] menu_name_array = { "打开""重新下载""详细""删除"};  
    
public static void ShowMenuDialog(final Context context){  
        View menuView 
= View.inflate(context, R.layout.menu, null);  
        menuDialog 
= new AlertDialog.Builder(context)  
        .setView(menuView)  
        .create();  
        menuDialog.show();  
        menuGrid  
= (GridView) menuView.findViewById(R.id.menu);  
        menuGrid.setAdapter(getMenuAdapter(context, menu_name_array, menu_image_array));  
        menuGrid.setOnItemClickListener(
new OnItemClickListener() {  
            
//监听menu按钮事件  
            @Override  
            
public void onItemClick(AdapterView<?> parent, View view,  
                    
int position, long id) {  
                switch(position){  
                
case 0:     //open file  
                      
                    break;  
                
case 1:     //redownload 重新下载  
                      
                    break;  
                
case 2:     //file details    
                      
                    break;  
                
case 3:     //delete file  
                      
                    break;  
                }  
            }  
        });  
    }  
      
    
/** 
     
* 为menuGrid设置Adapter 
     
* @param context 
     
* @param menuNameArray 
     
* @param imageResourceArray 
     
* @return 
     
*/  
    
private static SimpleAdapter getMenuAdapter(Context context, String[] menuNameArray,  
            
int[] imageResourceArray) {  
        ArrayList
<HashMap<StringObject>> data = new ArrayList<HashMap<StringObject>>();  
        
for (int i = 0; i < menuNameArray.length; i++) {  
            HashMap
<StringObject> map = new HashMap<StringObject>();  
            map.put(
"itemImage", imageResourceArray[i]);  
            map.put(
"itemText", menuNameArray[i]);  
            data.add(map);  
        }  
        SimpleAdapter simperAdapter 
= new SimpleAdapter(context, data,  
                R.layout.item_menu, 
new String[] { "itemImage""itemText" },  
                
new int[] { R.id.item_image, R.id.item_text });  
        return simperAdapter;  
    }  
}  
责任编辑:景琦 来源: Android
相关推荐

2012-03-20 11:07:08

2015-09-01 17:09:41

uc浏览器源码

2011-12-08 15:40:16

UC浏览器

2017-03-22 20:30:40

2021-06-04 15:55:32

浏览器UC浏览器安卓手机

2021-01-28 07:06:55

Microsoft Edge浏览器 Dev 开发

2010-09-18 17:07:13

2013-12-24 14:57:22

android模拟器

2020-02-04 17:11:21

Chrome浏览器UC浏览器

2020-02-05 10:59:49

浏览器ChromeUC浏览器

2013-01-17 14:55:49

2014-01-13 11:09:42

UC浏览器PC智能电视

2010-04-05 21:57:14

Netscape浏览器

2013-11-18 14:42:53

浏览器渲染

2013-06-28 15:27:44

2010-08-10 09:40:23

Flex与浏览器交互

2011-09-06 17:47:21

浏览器单窗口多任务

2021-02-04 06:55:40

微软Edge浏览器

2019-12-02 13:46:35

浏览器前端开发
点赞
收藏

51CTO技术栈公众号