Android 自定义底部公用菜单
注释:此案例主要展示自定义底部菜单,一处封装处处调用。使用起来相当方便
一、初始的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 自定义底部公用菜单的更多相关文章
- Android自定义底部带有动画的Dialog
Android自定义底部带有动画的Dialog 效果图 先看效果图,是不是你想要的呢 自定义Dialog package --.view; import android.app.Dialog; imp ...
- android 自定义下拉菜单
本实例的自定义下拉菜单主要是继承PopupWindow类来实现的弹出窗体,各种布局效果可以根据自己定义设计.弹出的动画效果主要用到了translate.alpha.scale,具体实现步骤如下: 先上 ...
- Android 自定义View修炼-Android 实现自定义的卫星式菜单(弧形菜单)View
一.总述 Android 实现卫星式菜单也叫弧形菜单的主要要做的工作如下:1.动画的处理2.自定义ViewGroup来实现卫星式菜单View (1)自定义属性 a. 在attrs.xml中 ...
- Android 自定义ListView实现底部分页刷新与顶部下拉刷新,androidlistview
在项目开发中,由于数据过大时,需要进行分页加载或下拉刷新,来缓解一次性加载的过长等待.本篇博文实例讲解通过自定义的ListView实现底部分页加载和顶部下拉刷新的效果. 其效果图: 一.ListVie ...
- Android自定义顶部栏及侧滑菜单和fragment+viewpag滑动切换的实现
嘿嘿嘿,关于android滑动的操作,是不是经常都会用到呢. 我肯定也要学习一下啦. https://blog.csdn.net/u013184970/article/details/82882107 ...
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- Xamarin.Android之ActionBar与菜单
一.选项卡 如今很多应用都会使用碎片以便在同一个活动中能够显示多个不同的视图.在Android 3.0 以上的版本中,我们已经可以使用ActionBar提供的Tab来实现这种效果,而不需要我们自己去实 ...
- Android自定义View4——统计图View
1.介绍 周末在逛慕课网的时候,看到了一张学习计划报告图,详细记录了自己一周的学习情况,天天都是0节课啊!正好在学习Android自定义View,于是就想着自己去写了一个,这里先给出一张慕课网的图,和 ...
- Android 自定义View (五)——实践
前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...
随机推荐
- python-原型模式
源码地址:https://github.com/weilanhanf/PythonDesignPatterns 说明 原型模式关注的是大量相同对象或相似对象的创建问题,意图在于通过复制一个已经存在的实 ...
- CSS文字超出指定长度,用省略号
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; display: block;
- SpringMVC—Struts2拦截器学习网址整理
引自:http://blog.csdn.net/wp1603710463/article/details/49982683 SpringMVC—Struts2拦截器学习网址整理 最近项目中遇到权限相关 ...
- 用ContentProvider获取通讯录联系人
手机中的联系人数据实际是保存在数据库中的,但Android并没有让我们通过操作数据库去读取数据,而是通过一个ContractProvider这个应用提供了一个ContentProvider访问接口. ...
- Nodejs编译Native Code:使用C++构建工具npm
Nodejs的很多NPM包需要本地编译,通常是C++写的代码,例如图像处理模块等. 这是如果生产环境没有安装Visual Studio 2015等开发工具,通常会编译失败,发现了一个npm专门干这事儿 ...
- Android手机上,利用bat脚本模拟用户操作
………… 那么你就可以来看看这篇帖子了. 言归正传 利用bat脚本模拟用户操作,需要用到两点: ①就是adb命令了,adb命令可以用来模拟用户在手机上的操作 ②bat语言,就是批处理语言,主要用来进行 ...
- springboot 学习之路 17(webflux 入门 (1))
Webflux: webflux是在springboot2系列引入的技术:补充一些概念: 1> Reactive Streams 是 JVM 中面向流的库标准和规范: 处理可能无限数量的元素 按 ...
- LeetCode题解之Happy Number
1.题目描述 2.题目分析 根据 happy number 的 性质,如果循环7次还没有到达 1,则这个数不是happy number . 3.代码 bool isHappy(int n) { ) r ...
- .NET笔试题集(五)
转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/15/2684938.html 1.什么是受管制的代码? 答:unsafe:非托管代码.不 ...
- Windows2003系统如何设置能让两个人共用一个桌面同时远程控制?
在windows 2003上,可以两人同时同一桌面控制一台服务器,交流非常方便. 解决方案: 两人都用终端远程登陆到服务器上,其中一人在“开始”--“管理工具”--“终端服务管理器”,选中对方的用户名 ...