Android 主界面 九宫格 超灵活的配置

activity:

package com.android.fmis.client.activity;


import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;


import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.SimpleAdapter;
import android.widget.TextView;


import com.android.fmis.client.model.Menu;
import com.android.fmis.client.service.MenuService;
import com.android.fmis.client.util.Utils;


public class IndexActivity extends Activity{
private GridView gridview;
List<Menu> menuList;
private ImageView imageItem;
private TextView textItem;
private String role;
private String isChargeMan;
private String UCode;


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.index);
initControl();
initData();
}

private void initControl() {
//imageItem = (ImageView) findViewById(R.id.imageItem);
//imageItem.setAlpha(200);
//textItem=(TextView) findViewById(R.id.textItem);
getBundleData();

}
private void getBundleData(){
Bundle b=getIntent().getExtras();
if(b!=null){
UCode=b.getString("UCode");
role=b.getString("role");
isChargeMan=b.getString("isChargeMan");
}
}
private void initData() {
gridview = (GridView) findViewById(R.id.gv_index);
gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
MenuService service = new MenuService(IndexActivity.this);


menuList = service.getMenuList(role,isChargeMan);


// 生成动态数组,并且转入数据
ArrayList<HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();


for (int i = 0; i < menuList.size(); i++) {
try {
Menu menu = menuList.get(i);


HashMap<String, Object> map = new HashMap<String, Object>();


Class draw = R.drawable.class;
Field field = draw.getDeclaredField(menu.getIcon());
int icon = field.getInt(menu.getIcon());


map.put("ItemImage", icon);
map.put("ItemText", menu.getName());
lstImageItem.add(map);


} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}


// 生成适配器的ImageItem <====> 动态数组的元素,两者一一对应
SimpleAdapter saImageItems = new SimpleAdapter(this, // 没什么解释
lstImageItem,// 数据来源
R.layout.index_gridview_item,// night_item的XML实现


// 动态数组与ImageItem对应的子项
new String[] { "ItemImage", "ItemText" },


// ImageItem的XML文件里面的一个ImageView,和TextView ID
new int[] { R.id.imageItem, R.id.textItem });


// 添加并且显示
gridview.setAdapter(saImageItems);

// 添加消息处理
gridview.setOnItemClickListener(new ItemClickListener());
}


// 当AdapterView被单击(触摸屏或者键盘),则返回的Item单击事件
class ItemClickListener implements OnItemClickListener {
public void onItemClick(AdapterView<?> arg0,// The AdapterView where the
// click happened
View view,// The view within the AdapterView that was clicked
int arg2,// The position of the view in the adapter
long arg3// The row id of the item that was clicked
) {
// 在本例中arg2=arg3
imageItem = (ImageView) view.findViewById(R.id.imageItem);
switch (arg2) {
case 0:
imageItem
.setImageResource(R.drawable.icon);
break;
case 1:
imageItem
.setImageResource(R.drawable.icon1);
break;
case 2:
imageItem
.setImageResource(R.drawable.icon2);
break;
case 3:
imageItem
.setImageResource(R.drawable.icon3);
break;
default:
break;
}
try {
Menu menu = menuList.get(arg2);


if (menu.getActivity() == null || menu.getActivity() == "") {
return;
}


String className = "com.android.fmis.client.activity."
+ menu.getActivity();
Utils.startActivity(IndexActivity.this, Class
.forName(className));
} catch (Exception e) {
// TODO: handle exception
Log.e("IndexActivity", e.getMessage(), e);
e.printStackTrace();
}
}
}


}


service:

package com.android.fmis.client.service;


import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;


import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;


import com.android.fmis.client.model.Menu;




import android.content.Context;
import android.util.Log;






/**
 * 主界面九宫格
 * @author Administrator
 *
 */
public class MenuService {


private Context context;



private static List<Menu> menuList;
/**
 * @param context
 */
public MenuService(Context context) {
this.context = context;
}



/**
 * 
 */
public static void clean()
{
menuList = null;
}

/**
 * @return
 */
public List<Menu> getMenuList(String role,String isChargeMan) {//01教师,03学生,isChargeMan=1教师且部门负责人
if(role.equals("01") && isChargeMan.equals("1")){//教师且负责人
menuList=getMenusFromXml("MenuTeacherPrincipal.xml");
}else if(role.equals("01") && !isChargeMan.equals("1")){//教师非负责人
menuList= getMenusFromXml("MenuTeacher.xml");
}else if(role.equals("03") && !isChargeMan.equals("1")){//学生
menuList=getMenusFromXml("MenuStudent.xml");
}
return menuList;
}


/**
 * 参数fileName:为xml文档路径
 */
public List<Menu> getMenusFromXml(String fileName) {
List<Menu> Menus = new ArrayList<Menu>();
DocumentBuilderFactory factory = null;
DocumentBuilder builder = null;
Document document = null;
InputStream inputStream = null;
// 首先找到xml文件
factory = DocumentBuilderFactory.newInstance();
try {
// 找到xml,并加载文档
builder = factory.newDocumentBuilder();
inputStream = this.context.getResources().getAssets()
.open(fileName);
document = builder.parse(inputStream);
// 找到根Element
Element root = document.getDocumentElement();
NodeList nodes = root.getElementsByTagName("Menu");
// 遍历根节点所有子节点,Menus 下所有Menu
Menu menu = null;
for (int i = 0; i < nodes.getLength(); i++) {

menu = new Menu();
// 获取Menu元素节点
Element menuElement = (Element) (nodes.item(i));

// 获取Menu中name属性值
menu.setName(menuElement.getAttribute("name"));
menu.setIcon(menuElement.getAttribute("icon"));
menu.setActivity(menuElement.getAttribute("activity"));

// NodeList subNodes = menuElement.getElementsByTagName("SubMenu");
//
// menu.setSubMenuList(new ArrayList<SubMenu>());
//
// for (int n = 0; n < subNodes.getLength(); n++) {
// Element subMenuElement = (Element) (subNodes.item(n));
//
// SubMenu subMenu = new SubMenu();
// subMenu.setName(subMenuElement.getAttribute("name"));
// subMenu.setActivity(subMenuElement.getAttribute("activity"));
//
// menu.getSubMenuList().add(subMenu);
// }

Menus.add(menu);
}
} catch (Exception e){
Log.e("error", e.getMessage(), e);

} finally {
try {
inputStream.close();
} catch(Exception ex)  {

}
}
return Menus;
}


}

登录有权限问题,不同用户登录有不同的模块,那么这个就在这里配置了

MenuStdent.xml //学生登录只有学生收费查询

<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="学生收费查询" icon="icon3" activity="StudentActivity"></Menu>
</Menus>

MenuTeacher.xml  //普通教师登录有薪资查询和项目经费查询

<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="薪资查询" icon="icon" activity="SalaryActivity"></Menu>
<Menu name="项目经费查询" icon="icon1" activity="ProjectActivity"></Menu>
</Menus>


MenuTeacherPrincipal.xml   //教师且是部门负责人,有薪资查询,部门经费查询,项目经费查询

<?xml version="1.0" encoding="utf-8"?>
<Menus>
<Menu name="薪资查询" icon="icon" activity="SalaryActivity"></Menu>
<Menu name="项目经费查询" icon="icon1" activity="ProjectActivity"></Menu>
<Menu name="部门经费查询" icon="icon2" activity="DeptActivity"></Menu>
</Menus>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值