简单封装的popwindow

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_30299243/article/details/82895317

1,pop类

import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;

import com.yunyou.meyao.R;

public class TakePhotoPopWin extends PopupWindow {

    private Context mContext;

    private View view;
    private ImageView zuo, shang;
    private RelativeLayout pop, pop1, pop3;

    public TakePhotoPopWin(Context mContext, View.OnClickListener itemsOnClick) {
        this.view = LayoutInflater.from(mContext).inflate(R.layout.take_photo_pop, null);
        zuo = (ImageView) view.findViewById(R.id.zuo);
        shang = (ImageView) view.findViewById(R.id.shang);
        pop = (RelativeLayout) view.findViewById(R.id.pop);
        pop1 = (RelativeLayout) view.findViewById(R.id.pop1);
        pop3 = (RelativeLayout) view.findViewById(R.id.pop3);
        // 设置按钮监听
        zuo.setOnClickListener(itemsOnClick);
        shang.setOnClickListener(itemsOnClick);
        pop.setOnClickListener(itemsOnClick);
        pop1.setOnClickListener(itemsOnClick);
        pop3.setOnClickListener(itemsOnClick);
        // 设置外部可点击
        this.setOutsideTouchable(true);
        // mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
        this.view.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View v, MotionEvent event) {
                int height = view.findViewById(R.id.pop_layout).getTop();
                int y = (int) event.getY();
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    if (y < height) {
                        dismiss();
                    }
                }
                return true;
            }
        });


        /* 设置弹出窗口特征 */
        // 设置视图
        this.setContentView(this.view);
        // 设置弹出窗体的宽和高
        this.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT);
        this.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);

        // 设置弹出窗体可点击
        this.setFocusable(true);

        // 实例化一个ColorDrawable颜色为半透明
        ColorDrawable dw = new ColorDrawable(0xb0000000);
        // 设置弹出窗体的背景
        this.setBackgroundDrawable(dw);

        // 设置弹出窗体显示时的动画,从底部向上弹出
        this.setAnimationStyle(R.style.take_photo_anim);

    }
}
2,使用的类里调用方法

   private void showpopwindows() {
        takePhotoPopWin = new TakePhotoPopWin(this, onClickListener);
        takePhotoPopWin.showAtLocation(findViewById(R.id.main_view), Gravity.CENTER, 0, 0);//这个类的整体布局的id
    }

private View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.zuo:
                    startActivity(new Intent(MainActivity.this, ZhaoPin.class));
                    takePhotoPopWin.dismiss();
                    break;
                case R.id.shang://商品
                    startActivity(new Intent(MainActivity.this, ChanPin.class));
                    takePhotoPopWin.dismiss();
                    break;
                case R.id.pop:
                case R.id.pop1:
                case R.id.pop3:
                    takePhotoPopWin.dismiss();
                    break;
            }
        }
    };

猜你喜欢

转载自blog.csdn.net/qq_30299243/article/details/82895317