基于Android技术的物联网应用开发-Android studio

2021.10.31 清空草稿箱 🚮 2022.10.11

Android studio 菜单栏功能讲解翻译_ZhangJiQun&MXP的博客-CSDN博客

Android studio之菜单_Be your bubble的博客-CSDN博客

Android studio 之 Menu(菜单)_铃儿小铃铛的博客-CSDN博客_androidstudio menu

目录

U4 Android应用界面       

4.3 Android菜单设计

4.3.1 Android 选项菜单

4.3.2 Android上下文菜单

4.3.3 Android子菜单

4.3.4 Java代码实例


U4 Android应用界面       

4.3 Android菜单设计

Android系统支持3种菜单:

1.选项菜单(Option Menu)2.子菜单(Submenu)3.上下文菜单(Context Menu);

在Activity中可以通过重写onCreateOptionsMenu(Menu menu)方法创建选项菜单,在onCreateOptionsMenu(Menu menu)方法内部可以调用Menu.add()方法实现菜单的添加。

处理事件:重写Acticity的onMenuItemSelected()方法;

4.3.1 Android 选项菜单

选项菜单(Option Menu)分为两类:图标菜单(Icon Menu)和扩展菜单(Expanded Menu);图标菜单在安卓4.0之后,默认为垂直的列表型菜单,可以同时显示文字和图标,图标菜单不支持单选框和复选框控件。

扩展菜单 Android:一步步开发一个高度可定制化的扩展菜单_Brioal的博客-CSDN博客

注意:一般的选项菜单:最多可以有两行,每行3个菜单项,当多余 6 个的时候或出现more,点击显示; 
创建:重写 onCreateOptionsMenu() 方法; 
事件:重写onOptionsItemSelected()方法 ;

4.3.2 Android上下文菜单

上下文菜单:ContextMenu 

说明:选项菜单服务于Activity,上下文菜单是注册到某一个View对象上;
提示:可以为ContextMenu指定标题和图标,但菜单选项不能附带图标; 
创建:重写onCreateContextMenu(); 
事件:重写onContextItemSelected(); 
注册:registerForContextMenu(); 

4.3.3 Android子菜单

子菜单:SubMenu 

说明:子菜单不能嵌套子菜单,即android中菜单只有两层; 
提示:子菜单项不支持显示图标 ;
创建:使用addSubMenu(); 添加具有子菜单的菜单项 ;

4.3.4 Java代码实例

package com.example.menu;  
  
import android.app.Activity;  
import android.os.Bundle;  
import android.view.ContextMenu;  
import android.view.ContextMenu.ContextMenuInfo;  
import android.view.Menu;  
import android.view.MenuItem;  
import android.view.SubMenu;  
import android.view.View;  
import android.widget.RelativeLayout;  
import android.widget.Toast;  
  
public class MainActivity extends Activity {  
  
    private RelativeLayout myLayout; // 声明布局属性  
  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        myLayout = (RelativeLayout) findViewById(R.id.myLayout); // 获取对象  
        registerForContextMenu(myLayout); // 注册上下文菜单  
  
    }  
  
    /*********************************** 选项菜单 Start OptionMenu ************************************************/  
  
    // 选项菜单的实现  
    public boolean onCreateOptionsMenu(Menu menu) {  
  
        /* 
         * 参数说明: 1:组标识 2:菜单项ID ,唯一标识 3: 菜单项摆放的顺序 4:菜单上显示的文字 
         */  
        MenuItem addMenuItem = menu.add(1, 0, 0, "添加"); // 添加菜单项  
        addMenuItem.setIcon(R.drawable.icon_download2); // 设置图标  
        MenuItem uppMenuItem = menu.add(1, 1, 1, "修改");  
        uppMenuItem.setIcon(R.drawable.icon_download2);  
  
        /* 子菜单实现 */  
        SubMenu delSubMenu = menu.addSubMenu(1, 1, 1, "删除"); // 给menu添加子菜单  
        delSubMenu.setHeaderIcon(R.drawable.icon_download2); // 设置子菜单单出框图标  
        delSubMenu.setHeaderTitle("删除");  
        delSubMenu.setIcon(R.drawable.icon_download2); // 创建子菜单的图标  
        delSubMenu.add(2, 11, 11, "直接"); // 为子菜单添加二级菜单  
        delSubMenu.add(2, 12, 12, "间接");  
  
        SubMenu showSubMenu = menu.addSubMenu(1, 2, 2, "显示"); // 添加子菜单  
        showSubMenu.setIcon(R.drawable.icon_download2); // 设置子菜单图标  
        showSubMenu.setHeaderIcon(R.drawable.icon_download2); // 设置弹出框图标  
        showSubMenu.setHeaderTitle("显示"); // 设置弹出框标题  
        showSubMenu.add(2, 21, 21, "全显");  
        showSubMenu.add(2, 21, 22, "慢显");  
  
        return true;  
    }  
  
    // 选项菜单选择事件  
    public boolean onOptionsItemSelected(MenuItem item) {  
        switch (item.getItemId()) {  
        case 0:  
            Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",  
                    Toast.LENGTH_LONG).show();  
            break;  
  
        case 1:  
            Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",  
                    Toast.LENGTH_LONG).show();  
            break;  
        default:  
            Toast.makeText(MainActivity.this, "选中了" + item.getTitle() + "菜单",  
                    Toast.LENGTH_LONG).show();  
            break;  
        }  
        return super.onOptionsItemSelected(item);  
    }  
  
    /** 
     * 选项菜单被关闭时触发该方法: 1、back 按钮被点击 2、menu 按钮再次按下 3、选择了某一个菜单项 
     */  
    public void onOptionsMenuClosed(Menu menu) {  
        super.onOptionsMenuClosed(menu);  
        Toast.makeText(MainActivity.this, "选项菜单被关闭了...", Toast.LENGTH_LONG)  
                .show();  
    }  
  
    /** 
     * 选项菜单显示之前调用 
     *  
     * @return false :此方法把menu点击的动作屏蔽了,onCreateOptionsMenu 方法不会调用 
     */  
    public boolean onPrepareOptionsMenu(Menu menu) {  
        Toast.makeText(MainActivity.this, "onPrepaareOptionsMenu()方法被调用...",  
                Toast.LENGTH_LONG).show();  
        return super.onPrepareOptionsMenu(menu);  
    }  
  
    /***************************************** End OptionMenu **************************************************************/  
  
    /***************************************** 上下文菜单 Start ContextMenu **************************************************/  
  
    // 创建上下文菜单  
    public void onCreateContextMenu(ContextMenu menu, View v,  
            ContextMenuInfo menuInfo) {  
        super.onCreateContextMenu(menu, v, menuInfo);  
        menu.setHeaderIcon(R.drawable.icon_download2); // 设置上下文菜单标题的图标  
        menu.setHeaderTitle("设置背景颜色"); // 设置上下文菜单的标题  
        MenuItem oneMenuItem = menu.add(Menu.NONE, 0, 0, "红色"); // 添加菜单项 一  
        MenuItem twoMenuItem = menu.add(Menu.NONE, 1, 1, "黑色"); // 添加菜单项 二  
  
    }  
  
    // 上下文菜单选择事件  
    public boolean onContextItemSelected(MenuItem item) {  
        switch (item.getItemId()) {  
        case 0:  
            Toast.makeText(MainActivity.this, "选择了" + item.getTitle() + "菜单",  
                    Toast.LENGTH_LONG).show();  
            myLayout.setBackgroundColor(getResources().getColor(R.color.back)); // 设置颜色  
            break;  
  
        case 1:  
            Toast.makeText(MainActivity.this, "选择了" + item.getTitle() + "菜单",  
                    Toast.LENGTH_LONG).show();  
            myLayout.setBackgroundColor(getResources().getColor(R.color.red));// 设置颜色  
            break;  
        }  
        return super.onContextItemSelected(item);  
    }  
  
    // 上下文菜单关闭时调用..  
    public void onContextMenuClosed(Menu menu) {  
        super.onContextMenuClosed(menu);  
        Toast.makeText(MainActivity.this, "上下文菜单关闭...", Toast.LENGTH_LONG)  
                .show();  
    }  
  
    /***************************************** End ContextMenu ***********************************************************/  
  
    /***************************************** 子菜单 Start SubMenu ********************************************************/  
    // 结合选项菜单或者上下文菜单使用,本次结合上选项菜单实现子菜单....  
    /***************************************** End SubMenu ****************************************************************/  
  
}  
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着社会的发展,目前全球的手机用户数量已经超过了PC机的数量,而且手机的数量正在快速增长,其中智能手机所占的比例越来越大,特别是随着3G技术发展时代的到来,移动互联网将是一个巨大的市场,许多国际大公司以及国内的大公司都在抢占智能手机领域的市场份额。这期间,出现的智能手机可谓五花八门,种类繁多,但是真正好用,受用户喜爱的智能手机并不多。Android的出现带给了智能手机领域更多的机遇和挑战,由于Android基于Linux内核且具有开源、免费的特性,它迅速得到广大爱好者以及许多厂商的支持。    本文所对应的研究项目是一个基于Android智能手机的设计和实现,该智能手机在硬件上采用Marvell公司的PXA310处理器,其处理速度可达624MHz,除了一般手机必备的外设之外,还带有摄像头、蓝牙、WiFi、GPS等较高端的外围设备;在软件上,采用了Google推出的Android系统。    本文首先对课题背景做了阐述,包括智能手机操作系统目前的状况、Android的优势以及相关产品的介绍、课题研究目的及意义、系统设计目标、论文主要工作;然后针对Android的特性给出本系统开发环境的搭建方法以及下载源码和编译源码的方法,为降低成本对本系统采用的调试方法进行了分析和选择;进而对系统的硬件和软件进行设计,硬件设计包括硬件总体设计、处理器设计、存储器设计、音频模块设计、基带模块设计、蓝牙模块设计、USB模块设计等,软件设计包括本系统启动代码的移植、内核的移植、文件系统的制作,接着对一些有代表性的驱动进行了比较详细的分析。对于内核移植,Android内核移植和标准Linux内核移植有些差别;对于Android文件系统制作,需要编译Android源码得到内容,和普通Linux文件系统制作有所区别;对于驱动,Android下驱动和Linux驱动不完全相同,比如Android音频系统中对路由的选择可以通过配置文件实现,再比如Android下LCD驱动需要双缓冲等。在这之后对Android应用程序的蓝牙模块进行了深入的分析;最后进行了总结并指出本智能手机需要改进的地方。
1.物联网的开发难度越来越低当小王被老板要求开发一个物联网项目时,他面临这许多种解决方案,从硬件到软件一应俱全。有的提供了模块化的硬件,有的提供了高度集成的软件开发环境,有的支持python开发,有的支持图形化开发,有的提供硬件SDK,有的提供从云端到移动端成套的解决方案。小王该如何选择?的确,物联网的开发难度越来越低,只要你想,就可以拖拖拽拽做出来一个简单的设备。移动端APP呢?也是如此,你甚至可以登陆某平台的网站在线生成一个安装包直接安装到手机上。但是这些便利化的前提是失去对核心技术的掌握,以及跳转界面、使用习惯等无法把控。2.移动端APP技能是必备当学习物联网技术的小赵到某公司应聘时,公司技术主管对他的知识结构基本满意。然后让他开发一个物联网项目,要软硬件结合,移动端APP是必备的。小赵可以很快做出来一台基于ESP8266的硬件设备,连接到某物联网平台,做出来一个手机端的APP。但是主管对这个APP不太满意,问小赵自己会不会制作手机APP?小赵有些尴尬。为什么移动端APP技能是必备?因为物联网技术涉及到的知识领域有很多个,能够自己做出APP才算是将这些领域的知识完全掌握。就像是一个侠客的武功,最厉害的那个还没有练成,还不能算是真正的高手。3.定制APP价格很贵市场上有不少的物联网软件公司开展物联网应用APP的定制业务,当然价格不菲。如果是公司采购,你将花费较大的价格采购到一个未来并不可控的APP。反过来说,如果是学生应聘,你学到移动端应用知识,将大大提升你的竞争力,你的技能将成为核心竞争力。4.没有类似的教程原因就不多说了。即使有一些片段代码给了大家,大家也做不出来一个能用的APP。5.本课程要讲什么基于阿里云物联网平台(其他物联网平台类似),带您使用Android Studio编写一个安卓APP,实现连接阿里云物联网平台,控制一台智能灯。通过一个软硬件结合项目,结合源代码,一点一点为大家讲解怎么样连接阿里云物联网平台,每一个步骤是怎么回事,源代码怎么实现。为了照顾一些零基础的朋友,课程中还会用一些通俗的语言介绍这些知识,让大家掌握书上和网络上一些不太注意的技术细节。  

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值