Android studio实现菜单效果

本文实例为大家分享了Android studio实现菜单效果的具体代码,供大家参考,具体内容如下

一、onCreateOptionsMenu()

首先在res目录下新建一个menu文件夹,右击res目录→New→ Directory,输入文件夹名字menu(随意),点击OK,接着在menu文件夹下面新建一个main的菜单文件。点击menu文件夹new→menu resource file。
activity.xml文件代码不需要改动。

MainActivity.java 文件代码:

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    //用onCreateOptionsMenu()显示菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu,menu);//getMenuInflater()方法得到MenuInflater
        //调用inflate接收两个参数
        //R.menu.main指调用menu文件下的main资源文件
        return true;//返回true,允许创建的菜单显示,返回false不显示
    }
    //定义菜单响应事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){   //item.getItemId()判断我们选择那个菜单项
            case R.id.first:
                Toast.makeText(this, "FIRST", Toast.LENGTH_SHORT).show();
                break;
            case R.id.second:
                Toast.makeText(this, "SECOND", Toast.LENGTH_SHORT).show();
                break;
                default:
        }
        return true;
    }
}

关键代码:菜单 main.xml文件代码:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/add_item"
        android:title="ADD">
    </item>
    <item
        android:id="@+id/add_remove"
        android:title="REMOVE">
    </item>
</menu>

右上角三个点就是菜单,点击打开如图:

一的进阶(带子菜单的菜单)

menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/f1"
    android:title="更换背景">
</item>
<item
    android:id="@+id/f2"
    android:title="参数设置">
    <menu>
        <group
            android:id="@+id/group1"
            android:checkableBehavior="all">
            <item
                android:id="@+id/s1"
                android:title="参数1">
            </item>
            <item
                android:id="@+id/s2"
                android:title="参数2">
            </item>
        </group>
    </menu>
</item>
<item
    android:id="@+id/f3"
    android:title="恢复出厂">
</item>
</menu>

.java:

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    //用onCreateOptionsMenu()显示菜单
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater=new MenuInflater(this);//实例化一个MenuInflater对象
        inflater.inflate(R.menu.menu,menu);//解析菜单文件
        return true;
    }
    //定义菜单响应事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==R.id.f1)
            Toast.makeText(this, "更换背景", Toast.LENGTH_SHORT).show();
        else if(item.getItemId()==R.id.f3)
            Toast.makeText(this, "恢复出厂", Toast.LENGTH_SHORT).show();
        else
        {
            if(item.getGroupId()==R.id.group1){ //判断是否选中了第一层第二项
                //与menu.xml文件对应 android:checkableBehavior="all"
                if(item.isChecked()) //菜单被选中
                    item.setChecked(false);//设置菜单项不被选中
                else
                    item.setChecked(true);//设置菜单项被选中
            }
        }
        return true;
    }
}

效果:

二、onCreateContextMenu()(上下文菜单)

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="打开菜单:"/>
</LinearLayout>

menu.xml:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/red"
    android:title="红色">
</item>
<item
    android:id="@+id/green"
    android:title="绿色">
</item>
<item
    android:id="@+id/blue"
    android:title="蓝色">
</item>

</menu>

.java:

package com.example.myapplication;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv=(TextView)findViewById(R.id.text1);
        registerForContextMenu(tv);//为文本注册上下文菜单
    }
    //用onCreateContextMenu()显示菜单
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuInflater inflater=new MenuInflater(this);//实例化MenuInflater一个对象
        inflater.inflate(R.menu.menu,menu);//解析菜单文件
        menu.setHeaderTitle("选择颜色:");//为菜单头设置标题
    }
    @Override
    public boolean onContextItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.red:
                tv.setTextColor(Color.rgb(255,0,0));
                break;
            case R.id.green:
                tv.setTextColor(Color.rgb(0,255,0));
                break;
            default:
                tv.setTextColor(Color.rgb(0,0,255));
        }
        return true;
    }
}

长按打开菜单四个字

随便选择颜色打开菜单四个字就会变为相应的颜色

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解AndroidStudio中代码重构菜单Refactor功能

    代码重构几乎是每个程序员在软件开发中必须要不断去做的事情,以此来不断提高代码的质量.Android Stido(以下简称AS)以其强大的功能,成为当下Android开发工程师最受欢迎的开发工具,也是Android官方推荐使用的工具.如此优秀的工具,自然少不了要在代码重构这件事情上好好表现一把了.本文将通过代码演示,功能截图来详细介绍AS为代码重构提供的各项功能. 在AS的主菜单栏中有一项"Refactor"下拉菜单,点击该下拉菜单,会看到如下的界面,菜单中的每一项,都是为代码重构提供的

  • android studio 的下拉菜单Spinner使用详解

    一.认识Spinner Spinner其实就是一个列表选择框.不过Android的列表选择框并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择. Spinner 与 Gallery 都继承了AbsSpinner,AbsSpinner 继承了AdapterView,因此它也表现出AdapterView的特征:只要为AdapterView提供Adapter即可. 1.相关属性 android:dropDownHorizontalOffset:设置列表框的水平偏移距离 android:dropDo

  • Android studio实现菜单操作

    本文实例为大家分享了Android studio实现菜单操作的具体代码,供大家参考,具体内容如下 要求: 1.设置"打开"."关闭"和"退出"三个菜单项的菜单. 2.当单击"打开"菜单项时,使用Log.i显示"文件已打开" 3.当单击"关闭"菜单项时,使用Log.i显示"文件已关闭" 4.当单击"打开"菜单项时,使用Toast显示"确定要

  • Android Studio使用ViewPager+Fragment实现滑动菜单Tab效果

    本文为大家分享了Android Studio实现滑动菜单Tab效果的具体代码,供大家参考,具体内容如下 描述: 之前有做过一个记账本APP,拿来练手的,做的很简单,是用Eclipse开发的: 最近想把这个APP重新完善一下,添加了一些新的功能,并选用Android Studio来开发: APP已经完善了一部分,现在就想把已经做好的功能整理一下,记录下来. 效果图: 可以手动滑动菜单 也可以通过点击头部菜单进行切换 具体实现的代码: 前台代码(activity_main.xml): <?xml v

  • Android Studio Menu选择菜单的建立方法

    1.在res上面右键->New->Android resource directory 2.点击之后,出现下图Resource type选择menu,名字随便起,点击ok 3.可以看到菜单栏已经出现了men 4.menu上面右击,如下图选择: 5.file name自己随便起,点击ok 6.可以看到menu文件夹下,有一个main.XML文件,main是我起的文件名 Android Studio_Menu选择菜单的建立 1.由于手机屏幕不像电脑屏幕那样有充足的空间来添加各种选项,由此需要建立一

  • Android studio实现菜单效果

    本文实例为大家分享了Android studio实现菜单效果的具体代码,供大家参考,具体内容如下 一.onCreateOptionsMenu() 首先在res目录下新建一个menu文件夹,右击res目录→New→ Directory,输入文件夹名字menu(随意),点击OK,接着在menu文件夹下面新建一个main的菜单文件.点击menu文件夹new→menu resource file. activity.xml文件代码不需要改动. MainActivity.java 文件代码: packag

  • 简单实现Android弹出菜单效果

    本文实例为大家分享了Android弹出菜单效果的具体代码,供大家参考,具体内容如下 功能描述:用户单击按钮弹出菜单.当用户选择一个菜单项,会触发MenuItemClick事件并让弹出的菜单消失:如果用户在菜单外单击,则直接消失弹出的菜单.当菜单消失时,会引发DismissEvent事件(利用此事件可在菜单消失时做一些后续处理). 1.运行效果 2.添加菜单项 在Resources文件夹下添加一个menu子文件夹,然后在此子文件夹下添加一个名为demo07_popup_menu.xml的文件: <

  • Android studio自定义对话框效果

    本文实例为大家分享了Android studio自定义对话框效果的具体代码,供大家参考,具体内容如下 实现步骤: 第一步:自定义.xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="matc

  • Android Studio实现下拉列表效果

    本文实例为大家分享了Android Studio实现下拉列表的具体代码,供大家参考,具体内容如下 题目 使用 ArrayAdapter 的方式实现一个城市的下拉列表. 答案 activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"  

  • android实现筛选菜单效果

    前言 由于android M的popupwindow与之前版本不一致,笔者找不到能够代码监听物理返回键的方式,故另寻方式实现筛选菜单.5.0及之前的版本可用popupwindow实现,详情请参考popupwindow用法. 本篇采用Dialog实现. 实现步骤 1.设置主题 一般设置如下 <style name="Translucent_NoTitle" parent="android:style/Theme.Dialog"> <item name

  • Android实现弧形菜单效果

    前言:公司需求,自己写的一个弧形菜单! 效果: 开发环境:AndroidStudio2.2.1+gradle-2.14.1 涉及知识:1.自定义控件,2.事件分发等 部分代码: public class HomePageMenuLayout extends ViewGroup { private Context context; // 菜单项的文本 private String[] mItemTexts = null; private int StatusHeight;//状态栏高度 publi

  • Android实现卫星菜单效果

    前言 最近需求中,需要实现 卫星菜单的需求,最终通过自定义View和动画属性来实现,具体功能如下: 1.自定义View import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; import android.view.animat

  • Android自定义转盘菜单效果

    最近由于公司项目需要,需要开发一款转盘菜单,费了好大功夫搞出来了,下面分享下 样图 具体功能如下: import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v7.app.AppCompatActivity; im

随机推荐