首先,效果圖展示:
實現以消息形式彈出步驟:
步驟一:使用一個類繼承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