一個界面顯示兩個PupupWindows(一個是消息框的形式彈出,另一個是底部彈窗形式彈出)

首先,效果圖展示:


實現以消息形式彈出步驟:

步驟一:使用一個類繼承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;
            }
        });

    }
}


步驟二:再主Activity中進行聲明

//把文字控件添加監聽,點擊彈出自定義窗口
        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






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章