一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)

来源:互联网 发布:5g与广电网络 编辑:程序博客网 时间:2024/05/18 23:14

首先,效果图展示:


实现以消息形式弹出步骤:

步骤一:使用一个类继承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






阅读全文
0 0
原创粉丝点击