美文网首页
PopupWindow 简单封装

PopupWindow 简单封装

作者: 面向星辰大海的程序员 | 来源:发表于2021-04-06 12:22 被阅读0次
    public abstract class CommonPopWindow extends PopupWindow implements OnClickListener, PopupWindow.OnDismissListener {
        private int layout;
        private Context context;
        private View contentView;
        private View rotateView;
    }
    
    public CommonPopWindow(Context context, int layout, int width, int height) {
        this.context = context;
        this.layout = layout;
        this.setWidth(width);
        this.setHeight(height);
        init();
    }
    
    public CommonPopWindow(Context context, int layout) {
        this.context = context;
        this.layout = layout;
        this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
        this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
        init();
    }
    
     private void init() {
            this.setFocusable(true);
    // 设置PopupWindow的背景
            this.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    // 设置PopupWindow是否能响应外部点击事件
            this.setOutsideTouchable(true);
    // 设置PopupWindow是否能响应点击事件
            this.setTouchable(true);
    // 每个方法的作用都写在注解里了,相信大家都能看懂。不过这里要注意这两行:
    // window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    // window.setOutsideTouchable(true);
    // 只有同时设置PopupWindow的背景和可以响应外部点击事件,它才能“真正”响应外部点击事件。也就是说,当你点击PopupWindow的外部或者按下“Back”键时,PopupWindow才会消失。
            contentView = LayoutInflater.from(context).inflate(layout, null, false);
            this.setContentView(contentView);
            convert(contentView);
        }
        
            public abstract void convert(View popView);
    
    public void addListenerId(int... id) {
        for (int i = 0; i < id.length; i++) {
            contentView.findViewById(id[i]).setOnClickListener(this);
        }
    
    }
    public void onMyClickListener(View v) {
    }
     @Override
        public void onClick(View v) {
            onMyClickListener(v);
        }
    
    public void startRodate(int id) {
        rotateView = contentView.findViewById(id);
        Animation rotateAnimation = AnimationUtils.loadAnimation(context, R.anim.loading_rotate);
        LinearInterpolator linearInterpolator = new LinearInterpolator();
        rotateAnimation.setInterpolator(linearInterpolator);
        rotateView.startAnimation(rotateAnimation);
    }
    
    public void showOnParentCenter(View parentView) {
        showAtLocation(parentView, Gravity.CENTER, 0, 0);
    }
    

    相关文章

      网友评论

          本文标题:PopupWindow 简单封装

          本文链接:https://www.haomeiwen.com/subject/agqckltx.html