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里面。

20169211《移动平台开发实践》第八周作业_第1张图片

1028834-20170423221422241-714258531.jpg

2、Context Menu

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

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

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    
    //设置面积大一点,好点唉
    myTextView.setText("*******************************\n" + "要大一些看得才清楚的"
            + "*******************************\n");
    
    //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的方式几乎是一样的,只是在调用方法的时候不一样而已。

20169211《移动平台开发实践》第八周作业_第2张图片

20169211《移动平台开发实践》第八周作业_第3张图片

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

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

代码托管


20169211《移动平台开发实践》第八周作业_第4张图片

20169211《移动平台开发实践》第八周作业_第5张图片

学习进度条


代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 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 研发录》。

转载于:https://www.cnblogs.com/sharemi/p/6754448.html

你可能感兴趣的:(20169211《移动平台开发实践》第八周作业)