现在很多应用都采用底部弹出式菜单,觉得挺好看的,先上图
底部弹出菜单通过自定义PopupWindow实现,很简单的一个自定义
1.自定义PopupWindow代码:
public class ModelPopup extends PopupWindow implements android.view.View.OnClickListener {
private OnPopListener listener;
private View pop;
/**
*
* @param context
* @param listener
* 接口回调
* @param isShowMd
* 可以控制按钮数量
*/
public ModelPopup(Context context, OnPopListener listener, boolean isShowMd) {
super(context);
this.listener = listener;
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
pop = inflater.inflate(R.layout.pop_memu, null);
this.setContentView(pop);
this.setWidth(LayoutParams.MATCH_PARENT);
this.setHeight(LayoutParams.WRAP_CONTENT);
Button btn_1 = (Button) pop.findViewById(R.id.btn_1);
Button btn_2 = (Button) pop.findViewById(R.id.btn_2);
Button btn_3 = (Button) pop.findViewById(R.id.btn_3);
Button btn_4 = (Button) pop.findViewById(R.id.btn_4);
if (!isShowMd) {
btn_3.setVisibility(View.GONE);
}
btn_1.setOnClickListener(this);
btn_2.setOnClickListener(this);
btn_3.setOnClickListener(this);
btn_4.setOnClickListener(this);
// 设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
// 点击外面的控件也可以使得PopUpWindow dimiss
this.setOutsideTouchable(true);
// 设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.PopupAnimation);
// 实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0xb0000000);
this.setBackgroundDrawable(dw);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btn_1:
listener.onBtn1();
break;
case R.id.btn_2:
listener.onBtn2();
break;
case R.id.btn_3:
listener.onBtn3();
break;
case R.id.btn_4:
listener.onBtn4();
break;
}
dismiss();
}
}
2.接口
/***
* 按钮回调接口
*
* @author Sloven
*
*/
public interface OnPopListener {
public void onBtn1();
public void onBtn2();
public void onBtn3();
public void onBtn4();
}
3.使用
public class MainActivity extends Activity {
private Button btn_1;
private ModelPopup pop;
RelativeLayout rl_root;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
pop = new ModelPopup(this, new OnPopListener() {
@Override
public void onBtn1() {
Toast.makeText(MainActivity.this, "点击了1", 0).show();
}
@Override
public void onBtn2() {
Toast.makeText(MainActivity.this, "点击了2", 0).show();
}
@Override
public void onBtn3() {
Toast.makeText(MainActivity.this, "点击了3", 0).show();
}
@Override
public void onBtn4() {
Toast.makeText(MainActivity.this, "点击了4", 0).show();
}
}, true);
rl_root = (RelativeLayout) findViewById(R.id.rl_root);
btn_1 = (Button) findViewById(R.id.btn_1);
btn_1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
pop.showAtLocation(rl_root, Gravity.BOTTOM, 0, 0);
}
});
}
}
最后,附上demo地址:http://download.csdn.net/detail/qq_30124547/9575151