注释:此案例主要展示自定义底部菜单,一处封装处处调用。使用起来相当方便

一、初始的Activity

package com.example.myapi.buttommenu;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

import com.example.myapi.R;
import com.example.myapi.buttommenu.MenuUtils.MeunOnClickListener;

public class Menu1Activity extends Activity implements MeunOnClickListener,OnClickListener{
    private MenuUtils menuUtils;
    private Button btn_two;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu1);
        menuUtils = (MenuUtils)findViewById(R.id.menu_utils);
        menuUtils.setMenuListener(this);
        btn_two = (Button)findViewById(R.id.btn_two);
        btn_two.setOnClickListener(this);
    }

    @Override
    public void menuOne() {
        Toast.makeText(this, "您点击了菜单一", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuTwo() {
        Toast.makeText(this, "您点击了菜单二", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuThree() {
        Toast.makeText(this, "您点击了菜单三", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuFour() {
        Toast.makeText(this, "您点击了菜单四", Toast.LENGTH_LONG).show();
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.btn_two:
            Intent intent = new Intent();
            intent.setClass(this, Menu2Activity.class);
            startActivity(intent);
            break;
        }
    }

}

第二个Activity

package com.example.myapi.buttommenu;

import com.example.myapi.R;
import com.example.myapi.buttommenu.MenuUtils.MeunOnClickListener;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class Menu2Activity extends Activity implements MeunOnClickListener{
    private MenuUtils menuUtils;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu2);
        menuUtils = (MenuUtils)findViewById(R.id.menu_utils);
        menuUtils.setMenuListener(this);
    }

    @Override
    public void menuOne() {
        Toast.makeText(this, "您点击了菜单一", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuTwo() {
        Toast.makeText(this, "您点击了菜单二", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuThree() {
        Toast.makeText(this, "您点击了菜单三", Toast.LENGTH_LONG).show();
    }

    @Override
    public void menuFour() {
        Toast.makeText(this, "您点击了菜单四", Toast.LENGTH_LONG).show();
    }
}

自定义Menu

package com.example.myapi.buttommenu;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

import com.example.myapi.R;

/**
 * 菜单工具类
 * @author
 *  *
 */
public class MenuUtils extends LinearLayout implements OnClickListener{
    private Button btn_1;
    private Button btn_2;
    private Button btn_3;
    private Button btn_4;
    private Context context;
    private MeunOnClickListener listener;
    public MenuUtils(Context context) {
        super(context);
        this.context = context;
        initView(context);
    }
    public MenuUtils(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
    }
    private void initView(Context context){
        LinearLayout menuView = (LinearLayout)LayoutInflater.from(context).inflate(com.example.myapi.R.layout.menutuils, null);
        addView(menuView);
        btn_1 = (Button)menuView.findViewById(R.id.btn_1);
        btn_2 = (Button)menuView.findViewById(R.id.btn_2);
        btn_3 = (Button)menuView.findViewById(R.id.btn_3);
        btn_4 = (Button)menuView.findViewById(R.id.btn_4);
        btn_1.setOnClickListener(this);
        btn_2.setOnClickListener(this);
        btn_3.setOnClickListener(this);
        btn_4.setOnClickListener(this);
    }
    public void setMenuListener(MeunOnClickListener listener){
        this.listener = listener;
    }
    public interface MeunOnClickListener{
        public void menuOne();
        public void menuTwo();
        public void menuThree();
        public void menuFour();
    }
    @Override
    public void onClick(View v) {
        switch(v.getId()){
        case R.id.btn_1:
            listener.menuOne();
            break;
        case R.id.btn_2:
            listener.menuTwo();
            break;
        case R.id.btn_3:
            listener.menuThree();
            break;
        case R.id.btn_4:
            listener.menuFour();
            break;
        }
    }

}

一下是布局文件

<?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" >
       <com.example.myapi.buttommenu.MenuUtils
        android:id="@+id/menu_utils"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        />
    <Button
        android:id="@+id/btn_two"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="跳转到第二个界面"/>
</LinearLayout>
<?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" >
    <com.example.myapi.buttommenu.MenuUtils
        android:id="@+id/menu_utils"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        />

</LinearLayout>
<?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" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:id="@+id/btn_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="菜单一"/>
        <Button
            android:id="@+id/btn_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_weight="1"
            android:text="菜单二"/>
        <Button
            android:id="@+id/btn_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_weight="1"
            android:text="菜单三"/>
        <Button
            android:id="@+id/btn_4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_weight="1"
            android:text="菜单四"/>
    </LinearLayout>

</LinearLayout>

完毕

Android 自定义底部公用菜单的更多相关文章

  1. Android自定义底部带有动画的Dialog

    Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view; import android.app.Dialog; imp ...

  2. android 自定义下拉菜单

    本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计.弹出的动画效果主要用到了translate.alpha.scale,具体实现步骤如下: 先上 ...

  3. Android 自定义View修炼-Android 实现自定义的卫星式菜单(弧形菜单)View

    一.总述 Android 实现卫星式菜单也叫弧形菜单的主要要做的工作如下:1.动画的处理2.自定义ViewGroup来实现卫星式菜单View (1)自定义属性       a. 在attrs.xml中 ...

  4. Android 自定义ListView实现底部分页刷新与顶部下拉刷新,androidlistview

    在项目开发中,由于数据过大时,需要进行分页加载或下拉刷新,来缓解一次性加载的过长等待.本篇博文实例讲解通过自定义的ListView实现底部分页加载和顶部下拉刷新的效果. 其效果图: 一.ListVie ...

  5. Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现

    嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...

  6. Android 自定义View合集

    自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...

  7. Xamarin.Android之ActionBar与菜单

    一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...

  8. Android自定义View4——统计图View

    1.介绍 周末在逛慕课网的时候,看到了一张学习计划报告图,详细记录了自己一周的学习情况,天天都是0节课啊!正好在学习Android自定义View,于是就想着自己去写了一个,这里先给出一张慕课网的图,和 ...

  9. Android 自定义View (五)——实践

    前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...

随机推荐

  1. 大数据java基础day01

    day01笔记 1.==操作符和equals方法 equals方法存在于Object类中,所有类的equals方法都继承于Object 2.String类的常用方法 ①.replace()替换字符串 ...

  2. promise 拙见

    一,promise是什么? promise 是最早由社区提出和实现是一种解决异步编程的方案,比其他传统的解决方案(回调函数和事件)更合理和强大. ES6 将其写进了语言标准,统一了用法,原生提供了 p ...

  3. 浅谈对NaN的理解

    1.NaN : Not a Number 不是一个数字 2.NaN 与其他数值进行比较的结果总是不相等的,包括它自身在内 3.判断是否是NaN, 方法一  :is.NaN(变量): 方法二   :Nu ...

  4. 【代码笔记】iOS-FMDBDemo

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> #import "FMDatabase.h" ...

  5. Dynamics 365Online 使用adal.js注册和配置SimpleSPA应用程序

    本篇是基于dynamics 365online撰写,本文中使用的365online及azure均为试用版,因为online在国内还没落地,所以我申请的是新加坡版,online的申请方式可见我之前的博文 ...

  6. 使用kafka consumer api时,中文乱码问题

    使用Intelli idea调试kafka low consumer时,由于broker存储的message有中文, idea中console端是可以正确显示的 然后mvn package打包到服务器 ...

  7. RaPC栅格化多边形裁剪之——进化0.1

    采用整数二维数组进行cell的归属标记,将所有符合条件的cell输出,不进行整体多边形重构,用以统计面积. 上图: INTERSECT: 网格区域为离散化的空间范围,黄色部分为求交结果. differ ...

  8. word2vec前世今生

    word2vec前世今生 2013年,Google开源了一款用于词向量计算的工具--word2vec,引起了工业界和学术界的关注.首先,word2vec可以在百万数量级的词典和上亿的数据集上进行高效地 ...

  9. Intellij IDEA去除@Autowired下划线红色提示

    Intellij IDEA通过@Autowired注入的对象,在不改变配置的情况下一直有红色下划线,虽然不影响运行,但是跟小Alan一样有强迫症的肯定受不鸟. 那么怎么去除它呢? 解决方式:改变@Au ...

  10. Git 命令快速浏览

    Git 命令快速浏览 创建 Git 可管理的仓库 git init 查看当前仓库的状态 git status 添加到仓库,实际上是添加到暂存区 git add [-A | --all] git add ...