floating_button_layout.xml

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" > <ImageButton
android:id="@+id/ImageButton_Floating"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="15dp"
android:layout_marginRight="15dp"
android:background="@drawable/floating_button_style"
android:contentDescription="@null" >
</ImageButton> </RelativeLayout>

floating_menu.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" > <Button
android:id="@+id/Button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项1" /> <Button
android:id="@+id/Button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项2" /> <Button
android:id="@+id/Button3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项3" /> <Button
android:id="@+id/Button4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="选项4" /> </LinearLayout>

FloatingMenu.java

 package com.wangzhen.view;

 import com.wangzhen.animation.R;

 import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.Toast; /**
* 漂浮菜单
*
* @author Administrator
*
*/
public class FloatingMenu extends PopupWindow { private Context mContext;
private View view;
private Button Button1;
private Button Button2;
private Button Button3;
private Button Button4; public FloatingMenu(Context context) {
mContext = context;
LayoutInflater mInflater = LayoutInflater.from(mContext);
view = mInflater.inflate(R.layout.floating_menu, null);
Button1 = (Button) view.findViewById(R.id.Button1);
Button2 = (Button) view.findViewById(R.id.Button2);
Button3 = (Button) view.findViewById(R.id.Button3);
Button4 = (Button) view.findViewById(R.id.Button4); Button1.setOnClickListener(new MyClick());
Button2.setOnClickListener(new MyClick());
Button3.setOnClickListener(new MyClick());
Button4.setOnClickListener(new MyClick()); setWidth(300);
setHeight(LayoutParams.WRAP_CONTENT);
setFocusable(true);
ColorDrawable drawable = new ColorDrawable(0xb000000);
setBackgroundDrawable(drawable);
setContentView(view);
} private void ShowToast(String string) {
Toast.makeText(mContext, string, Toast.LENGTH_SHORT).show();
} class MyClick implements OnClickListener { @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Button1:
ShowToast("Button1");
break;
case R.id.Button2:
ShowToast("Button2");
break;
case R.id.Button3:
ShowToast("Button3");
break;
case R.id.Button4:
ShowToast("Button4");
break;
default:
break;
}
dismiss();
} }
}

FloatingButtonActivity.java

 package com.wangzhen.animation;

 import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ContentView;
import com.lidroid.xutils.view.annotation.ViewInject;
import com.lidroid.xutils.view.annotation.event.OnClick;
import com.wangzhen.view.FloatingMenu;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton; @ContentView(R.layout.floating_button_layout)
public class FloatingButtonActivity extends ActionBarActivity { private Context mContext; @ViewInject(R.id.ImageButton_Floating)
private ImageButton ImageButton_Floating; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ViewUtils.inject(this);
mContext = this;
ActionBar mActionBar = getSupportActionBar();
mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setDisplayShowHomeEnabled(false);
} @OnClick({ R.id.ImageButton_Floating })
private void OnClick(View view) {
switch (view.getId()) {
case R.id.ImageButton_Floating:
FloatingMenu menu = new FloatingMenu(mContext);
menu.setFocusable(true);
menu.setOutsideTouchable(true);
View view_btn = findViewById(R.id.ImageButton_Floating);
menu.showAtLocation(view_btn, Gravity.BOTTOM | Gravity.RIGHT, 0,
view_btn.getHeight() + 30);
break; default:
break;
}
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
FinishActivity();
break; default:
break;
}
return super.onOptionsItemSelected(item);
} /**
* 退出Activity
*/
private void FinishActivity() {
finish();
overridePendingTransition(0, R.anim.anim_page_out);
} @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
FinishActivity();
}
return false;
}
}

自定义悬浮按钮:FloatingButton的更多相关文章

  1. (IOS)悬浮按钮Demo

    思路:传入一个底层的view,将悬浮按钮(用view实现)和展开的子按钮列表add在其上,子按钮列表开始将坐标和悬浮按钮对应好后先将其隐藏,悬浮按钮识别到tap手势后触发展示子按钮列表的方法.通过在t ...

  2. android悬浮按钮(Floating action button)的两种实现方法

    原文: http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1028/1857.html 最近android中有很多新的设计规范被引入 ...

  3. 在TableView上添加悬浮按钮

    如果直接在TableVIewController上贴Button的话会导致这个会随之滚动,下面解决在TableView上实现位置固定悬浮按钮的两种方法: 1.在view上贴tableView,然后将悬 ...

  4. Mono自定义图片按钮

    首先,我们编写一个MyImageButton类,继承自LinearLayout public class MyPhoneImageButton:LinearLayout { private Image ...

  5. android自定义控件(3)-自定义当前按钮属性

    那么还是针对我们之前写的自定义控件:开关按钮为例来说,在之前的基础上,我们来看看有哪些属性是可以自定义的:按钮的背景图片,按钮的滑块图片,和按钮的状态(是开还是关),实际上都应该是可以在xml文件中直 ...

  6. iOS 自定义返回按钮,保留系统滑动返回

    原文链接 自定义返回按钮保留系统滑动返回手势.gif 1.简介 使用苹果手机,最喜欢的就是用它的滑动返回.作为一个开发者,我们在编写很多页面的时候,总是会因为这样那样的原因使得系统的滑动返回不可用.使 ...

  7. Android FloatingActionButton(FAB) 悬浮按钮

    FloatingActionButton 悬浮按钮                                                                            ...

  8. easyUI——datebox验证和自定义取消按钮

    来源:http://blog.csdn.net/liusong0605/article/details/42270463 1. datebox验证        验证结束时间<起始时间: 起始时 ...

  9. iOS 7 自定义Back按钮 与 Pop interactive gesture 问题

    1.自定义Back按钮 iOS中很多时候我们都会自定义返回按钮,也是一件easy的事,类似如下: // 返回按钮 1 - (void)showNavBackButton { UIButton *bac ...

随机推荐

  1. 【C++学习之路】派生类的构造函数(三)

    三.多层继承的派生类 1.多层继承的派生类只需在构造函数的初始化列表中写出直接基类的构造函数即可 class student { public: student(int n, string nam) ...

  2. protocol buffer介绍(protobuf)

    一.理论概述0.参考资料入门资料:https://developers.google.com/protocol-buffers/docs/javatutorial更详细的资料:For more det ...

  3. nodejs调试

    1.通过debug命令进行调试 node debug app.js 运行的结果: 在debug状态下输入"repl"命令可以评估变量和表达式的值 按下'CTRL+C'可以退出rep ...

  4. Python Socket Programming

    本文介绍使用Python进行Socket网络编程,假设读者已经具备了基本的网络编程知识和Python的基本语法知识,本文中的代码如果没有说明则都是运行在Python 3.4下. Python的sock ...

  5. 黑马程序员——C语言开门片内存分析

    iOS培训,iOS学习---------型技术博客.期待与您交流!------------ 一.各种进制的总结 1.二进制 (1) 在c语言中二进制以0b开头,输出二进制格式没有固定的格式,自定义输出 ...

  6. 配置android开发环境eclipse获取ADT获取不到

    在安装完Android SDK后eclipse要获取ADT, 可是由于GFW的存在, eclipse经常无法从http://dl-ssl.google.com/android/eclipse 获取到任 ...

  7. [LeetCode 111] - 二叉树的最小深度 (Minimum Depth of Binary Tree)

    问题 给出一棵二叉树,找出它的最小深度. 最小深度是指从根节点沿着最短路径下降到最近的叶子节点所经过的节点数. 初始思路 不难看出又是一个需要层次遍历二叉树的题目,只要在112基础上作出简单修改即可得 ...

  8. LINK : fatal error LNK1000: Internal error during IncrBuildImage

    一.下微软的补丁:KB948127补丁来解决,http://code.msdn.microsoft.com/KB948127.貌似安装了也不起作用二.如果下载的补丁没安装成功或下载失败,可以用下面的方 ...

  9. Linux系统编程(35)—— socket编程之TCP服务器的并发处理

    我们知道,服务器通常是要同时服务多个客户端的,如果我们运行上一篇实现的server和client之后,再开一个终端运行client试试,新的client就不能能得到服务了.因为服务器之支持一个连接. ...

  10. BZOJ 3040 最短路 (堆优化dijkstra)

    这题不是裸的最短路么?但是一看数据范围就傻了.点数10^6,边数10^7.这个spfa就别想了(本来spfa就是相当不靠谱的玩意),看来是要用堆优化dijkstra了.但是,平时写dijkstra时为 ...