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;
}
}