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

一、初始的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. Codeforces550C(SummerTrainingDay01-H)

    C. Divisibility by Eight time limit per test : 2 seconds memory limit per test : 256 megabytes input ...

  2. 【 js 基础 】【 源码学习 】 深浅拷贝

    underscore的源码中,有很多地方用到了 Array.prototype.slice() 方法,但是并没有传参,实际上只是为了返回数组的副本,例如 underscore 中 clone 的方法: ...

  3. C# 8.0 范围类型 Range Type

    目录 C# 8 范围类型 Range Type: 范围缩写: 从一个索引开始到数组的最后一个对象 从数组的第一个对象到指定索引 整个数组: 从数组的某个索引开始一直到距数组尾部某个索引: 范围类型 替 ...

  4. 【代码笔记】iOS-产生随机字符串

    一,代码: - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, ...

  5. v-charts使用心得

    前端er经常都会遇到使用echarts的时候,特别是弄后台管理的报表等地方,而v-charts是echarts的vue版本(饿了么写的),基本上能应付普通的图表.传送门 隐藏提示框与图例 v-char ...

  6. Jquery 只保留数字和小数点(正则)

    str.replace(/[^\d.]/g,"")

  7. 开源免费的文档协作系统 onlyoffice平台轻松部署

    请移步至此,更详细:http://blog.csdn.net/hotqin888/article/details/79337881 ONLYOFFICE是一个免费的.开源的企业办公套件,用于在线组织团 ...

  8. FAST特征点检测算法

    一 原始方法 简介 在局部特征点检测快速发展的时候,人们对于特征的认识也越来越深入,近几年来许多学者提出了许许多多的特征检测算法及其改进算法,在众多的特征提取算法中,不乏涌现出佼佼者. 从最早期的Mo ...

  9. HTML 5 Web Workers

    什么是Web Worker? web worker 是运行在后台的 JavaScript,不会影响页面的性能. Web Worker有什么用? JavaScript语言采用的是单线程模型,也就是说,所 ...

  10. windows 远程连接

    * 方法1:windows自带的远程工具 缺点:如果操作系统是家庭版,会一致连接不上:尽管想办法把这个功能打开: 步骤: * 打开允许远程连接: 点进去自己设置就行,没有什么好说的 设置完之后,需要允 ...