• 20169211《移动平台开发实践》第八周作业


    教材学习内容总结


    Android平台提供了3中菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。

    1、Option Menu

    这种应该是最常见的,一般手机上都会提供Menu的按钮,对应的就是这个菜单弹出。

    主要步骤就是复写Activity父类中的onCreateOptionMenu(Menu menu)方法,然后通过Menu的add方法来添加菜单进去。

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	menu.add(0, MENU_ITEM_COUNTER, 0, "开始");
    	menu.add(0, MENU_ITEM_COUNTER + 1, 0, "暂停");
    	menu.add(0, MENU_ITEM_COUNTER + 2, 0, "结束");
    
    	return super.onCreateOptionsMenu(menu);
    }
    

    ItemId是可以自己定义的int。

    private static final int MENU_ITEM_COUNTER = Menu.FIRST;
    

    设置好Menu后需要对每一个MenuItem进行定义处理,当用户点击是会调用onOptionsItemSelected(MenuItem item)这个方法,需要对该方法进行重写 。

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    	switch (item.getItemId()) {
    	case MENU_ITEM_COUNTER:
    		myTextView.setText("You click " + item.getTitle().toString()
    				+ "Menu");
    		break;
    	case MENU_ITEM_COUNTER + 1:
    		myTextView.setText("You click " + item.getTitle().toString()
    				+ "Menu");
    		break;
    	case MENU_ITEM_COUNTER + 2:
    		myTextView.setText("You click " + item.getTitle().toString()
    				+ "Menu");
    		break;
    	default:
    		break;
    	}
    	return super.onOptionsItemSelected(item);
    }
    

    这边我做了一个简单的处理,就对TextView进行了Text修改,这里可以做很多业务逻辑。

    注意:Android最多支持6个MenuItem,多了以后就摆在More里面。

    2、Context Menu

    翻译过来就是上下文菜单,其实知道Context最好是意会搞开发的都懂的,这个Mnue还是相当有用的,比如对于文件管理器来说一些增删改查就可以摆在ContextMenu中,它其实是实现了一个用户长按点击后弹出的来一个菜单。

    首先,ContextMenu在新建是会调onCreateContextMune(Menu menu)方法,我们需要对它进行复写。

    @Override
    public void onCreateContextMenu(ContextMenu menu, View v,
    		ContextMenuInfo menuInfo) {
    	
    	//设置面积大一点,好点唉
    	myTextView.setText("*******************************
    " + "要大一些看得才清楚的"
    			+ "*******************************
    ");
    	
    	//itemId注意不要重复,否则处理起来很蛋疼
    	menu.add(0, MENU_ITEM_COUNTER + 3, 0, "白色");
    	menu.add(0, MENU_ITEM_COUNTER + 4, 0, "红色");
    	menu.add(0, MENU_ITEM_COUNTER + 5, 0, "蓝色");
    
    	super.onCreateContextMenu(menu, v, menuInfo);
    }
    

    然后注册一下

    //要记得在需要的控件上注册上下文菜单
    registerForContextMenu(myTextView);
    

    当用户点击时会调用onContextItemSelected(MenuItem item)方法,对其重写。

    @Override
    public boolean onContextItemSelected(MenuItem item) {
    	
    	//根据选择不同,对Text进行不同背景色的显示
    	switch (item.getItemId()) {
    	case MENU_ITEM_COUNTER + 3:
    		myTextView.setBackgroundColor(Color.WHITE);
    		break;
    	case MENU_ITEM_COUNTER + 4:
    		myTextView.setBackgroundColor(Color.RED);
    		break;
    	case MENU_ITEM_COUNTER + 5:
    		myTextView.setBackgroundColor(Color.BLUE);
    		break;
    	default:
    		break;
    	}
    	
    	return super.onContextItemSelected(item);
    }
    

    其实看看就知道了,两种实现Menu的方式几乎是一样的,只是在调用方法的时候不一样而已。

    3、Sub Menu

    个人觉得子菜单的概念应该是从属于以上两个菜单类型的,即两种菜单类型中都可以使用子菜单。 实现很简单:

    	//申明一个子菜单
    	SubMenu subMenu = menu.addSubMenu("这个是一个子菜单");
    	subMenu.add(0, MENU_ITEM_COUNTER + 6, 0, "这个是子菜单的内容");
    

    代码托管


    学习进度条


    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 220/220 1/1 10/10
    第二周 400/620 1/2 18/28
    第三周 650/1120 1/3 12/40
    第四周 1443/2563 1/4 12/52
    第五周 3214/5777 1/5 20/72
    第六周 33/5800 1/6 10/82
    第七周 21/5800 1/7 10/92
    第八周 1767/7567 1/8 15/107

    参考资料


    - 《Android Programming: The Big Nerd Ranch Guide(Android 编程:权威指南)》;
    
    - 《Head First Android Development(深入浅出Android 开发)》;
    
    - 《Android 开发艺术探索》;
    
    - 《Android 设计模式源码分析》;
    
    - 《Android 开发精要》;
    
    - 《App 研发录》。
  • 相关阅读:
    [LeetCode]4Sum
    [LeetCode]3Sum
    [LeetCode]Two Sum
    [LeetCode]Maximal Rectangle
    [LeetCode]Largest Rectangle in Histogram
    [LeetCode]Sudoku Solver
    [LeetCode]Group Anagrams
    jQuery验证控件jquery.validate.js使用说明+中文API
    js操作cookie,实现登录密码保存
    Java中getResourceAsStream的用法
  • 原文地址:https://www.cnblogs.com/sharemi/p/6754448.html
Copyright © 2020-2023  润新知