Android UI(二)DridView的菜单

Jeff Lee blog:   http://www.cnblogs.com/Alandre/  (泥沙砖瓦浆木匠),retain the url when reproduced ! Thanks

今天我们来Android UI第二讲:实现DridView的菜单样式

下载链接:

http://files.cnblogs.com/Alandre/AndroidUI2.rar

效果图:

Android UI(二)DridView的菜单_第1张图片

第一步:实现Guid Item

首先确定的是,里面有四个元素。每个元素的组合为 图片+文字。所以我们先定义一个xml:

/AndroidUI2/res/layout/main_menu_item.xml:



	
	

 

第二步:通过定义的适配器SimpleAdapter 将你需要的Item add进GridView

先在视图中定义GridView:

/AndroidUI2/res/layout/activity_main.xml



    
		    
		    
		    
		    
	    


 

然后Activity核心代码:

package com.example.androidui2;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends Activity
{

	private GridView mainMenuGridView;
	private int[] mainMenuImageRes = {R.drawable.circle,R.drawable.circle,R.drawable.circle,R.drawable.circle};
	private String[] mainMenuStrs  = {"拨号","所有联系人","使用说明","退出"};
	
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mainMenuGridView = (GridView)findViewById(R.id.gridview_main_menu);
		
		initView();
	}

	// init views
	private void initView()
	{
		// init main-menu 
		List> datas = new ArrayList>();
		int length = mainMenuStrs.length;
		for (int i = 0; i < length; i++)
		{
			HashMap map = new HashMap();
			map.put("ItemImageView", mainMenuImageRes[i]);
			map.put("ItemTextView", mainMenuStrs[i]);
			datas.add(map);
		}
		SimpleAdapter menuAdapter = new SimpleAdapter(
				MainActivity.this,datas, 
				R.layout.main_menu_item, 
				new String[]{"ItemImageView","ItemTextView"},
				new int[]{R.id.ItemImageView,R.id.ItemTextView} );
		mainMenuGridView.setAdapter(menuAdapter);
		mainMenuGridView.setOnItemClickListener(new MainMenuItemOnClick());
		
	}

	// Main Menu Item On Click Function
	public class MainMenuItemOnClick implements OnItemClickListener
	{

		/** arg0 : The AdapterView where the click happened  
		*	arg1 : The view within the AdapterView that was clicked
		*   arg2 : The position of the view in the adapter
		*	arg3 : The row id of the item that was clicked
		**/
		public void onItemClick(AdapterView arg0, View arg1, int arg2,
				long arg3)
		{
			HashMap item = (HashMap)arg0.getItemAtPosition(arg2);
			if (item.get("ItemTextView").equals(mainMenuStrs[0]))
			{
				 Toast.makeText(getApplicationContext(), mainMenuStrs[0],  
		                    Toast.LENGTH_SHORT).show();  
			}
			if (item.get("ItemTextView").equals(mainMenuStrs[1]))
			{
				 Toast.makeText(getApplicationContext(), mainMenuStrs[1],  
		                    Toast.LENGTH_SHORT).show();  
			}
			if (item.get("ItemTextView").equals(mainMenuStrs[2]))
			{
				 Toast.makeText(getApplicationContext(), mainMenuStrs[2],  
		                    Toast.LENGTH_SHORT).show();  
			}
			if (item.get("ItemTextView").equals(mainMenuStrs[3]))
			{
				 Toast.makeText(getApplicationContext(), mainMenuStrs[3],  
		                    Toast.LENGTH_SHORT).show();  
			}
		}
		
	}
		
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}

 

解释:

定义所需要的  item 数组:

private int[] mainMenuImageRes = {R.drawable.circle,R.drawable.circle,R.drawable.circle,R.drawable.circle};
	private String[] mainMenuStrs  = {"拨号","所有联系人","使用说明","退出"};

 

初始化用SimpleAdapter添加

SimpleAdapter menuAdapter = new SimpleAdapter(
				MainActivity.this,datas, 
				R.layout.main_menu_item, 
				new String[]{"ItemImageView","ItemTextView"},
				new int[]{R.id.ItemImageView,R.id.ItemTextView} );
		mainMenuGridView.setAdapter(menuAdapter);

然后添加动作的时候,我们巧妙的获取到ItemImageView的值进行判断,然后动作。

HashMap item = (HashMap)arg0.getItemAtPosition(arg2);
			if (item.get("ItemTextView").equals(mainMenuStrs[0]))

 

总结

GridView 可以作为平面化菜单的好东西。

你可能感兴趣的:(Android UI(二)DridView的菜单)