首先,效果图展示:
实现以消息形式弹出步骤:
步骤一:使用一个类继承popupwindows
public class SelectPicPopupWindow extends PopupWindow {
private Button btn_1, btn_2, btn_3;
private View mMenuView;
public static EditText etMoney;
public SelectPicPopupWindow(Activity context, View.OnClickListener itemsOnClick) {
super(context);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView = inflater.inflate(R.layout.drinkwater_popupwindows, null);
btn_1 = (Button) mMenuView.findViewById(R.id.btn_1);
btn_2 = (Button) mMenuView.findViewById(R.id.btn_2);
btn_3 = (Button) mMenuView.findViewById(R.id.btn_3);
btn_1.setOnClickListener(itemsOnClick);
btn_2.setOnClickListener(itemsOnClick);
btn_3.setOnClickListener(itemsOnClick);
//设置SelectPicPopupWindow的View
this.setContentView(mMenuView);
//设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LinearLayout.LayoutParams.FILL_PARENT);
//设置SelectPicPopupWindow弹出窗体的高
this.setHeight(900);
//设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
//设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.AnimBottom);
//实例化一个ColorDrawable颜色为半透明
// ColorDrawable dw = new ColorDrawable(0xb0000000);
//设置SelectPicPopupWindow弹出窗体的背景
// this.setBackgroundDrawable(dw);
//mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
mMenuView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int height = mMenuView.findViewById(R.id.ll_drinkwater_money).getTop();
int y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
if (y < height) {
dismiss();
}
}
return true;
}
});
}
}
//把文字控件添加监听,点击弹出自定义窗口
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//实例化SelectPicPopupWindow
menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);
//显示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity
.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
}
});
步骤三:添加所需要的点击事件,然后在点击事件中做操作
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.tv1: {
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
mMoney.setText("消息框一");
mPopWindow.dismiss();
}
break;
case R.id.tv2: {
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
mMoney.setText("消息框二");
mPopWindow.dismiss();
}
break;
case R.id.tv3: {
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
mMoney.setText("消息框三");
mPopWindow.dismiss();
}
break;
case R.id.tv4: {
// Toast.makeText(this, "", Toast.LENGTH_SHORT).show();
mMoney.setText("消息框四");
mPopWindow.dismiss();
}
break;
实现以底部窗口形式弹出步骤:
由于上面部分已经使用一个类继承PupopWindows,所以在此不再复述
步骤二:添加点击事件弹出地步弹窗
case R.id.tv5: {
// Toast.makeText(this, "自定义", Toast.LENGTH_SHORT).show();
mMoney.setText("消息框五");
menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);
//显示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity
.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
mPopWindow.dismiss();
}
break;
步骤三:弹出底部popupWindows
//为弹出窗口实现监听类
private View.OnClickListener itemsOnClick = new View.OnClickListener() {
public void onClick(View v) {
// drinkWaterWindow.dismiss();
switch (v.getId()) {
case R.id.btn_1:
etMoney.setText(etMoney.getText().toString() + 1);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_2:
etMoney.setText(etMoney.getText().toString() + 2);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_3:
etMoney.setText(etMoney.getText().toString() + 3);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_4:
etMoney.setText(etMoney.getText().toString() + 4);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_5:
etMoney.setText(etMoney.getText().toString() + 5);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_6:
etMoney.setText(etMoney.getText().toString() + 6);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_7:
etMoney.setText(etMoney.getText().toString() + 7);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_8:
etMoney.setText(etMoney.getText().toString() + 8);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_9:
etMoney.setText(etMoney.getText().toString() + 9);
etMoney.setSelection(etMoney.getText().length());
break;
case R.id.btn_0:
etMoney.setText(etMoney.getText().toString() + 0);
etMoney.setSelection(etMoney.getText().length());
break;
default:
break;
}
}
};
经过上述步骤即可实现上述功能
源码下载地址:http://download.csdn.net/detail/k2514091675/9912556