PopupWindow详解



/**
 * AlertDialog 弹出的对话框
 * PopupWindow 跟对话框效果一样
 * 1:首先我要写一个布局模板
 * 怎么给popupWindow加动画
 * 1:开始动画和结束动画   需要自己新建资源文件夹 anim
 * 2:popwin里有个属性setAnimationStyle  需要要style样式
 * 3:直接开启即可
 *
 *
 */
 


public class MainActivity extends Activity implements View.OnClickListener {
    private Button mText;
    private PopupWindow mPopup;
    private TextView mP1, mP2;




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPopup();
        initViews();
    }


    private void initViews() {
        mText = (Button) findViewById(R.id.Btn);
        mText.setOnClickListener(this);


    }


    //初始化popup
    private void initPopup() {
        View inflate = getLayoutInflater().inflate(R.layout.popup_moban, null);


        mP1 = (TextView) inflate.findViewById(R.id.Popup_Text1);


        mP1.setOnClickListener(this);


        mP2 = (TextView) inflate.findViewById(R.id.Popup_Text2);


        mP2.setOnClickListener(this);


        mPopup = new PopupWindow(MainActivity.this);


        //这个是设置宽度的   一般参数都封装在ViewGroup的LayoutParams


        mPopup.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);


        mPopup.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);


        //加载一个布局模板进来
        mPopup.setContentView(inflate);


        //设置popup其他位置可以点击  如果想要这个效果实现  必须设置背景


        mPopup.setOutsideTouchable(true);


//       给他设置背景颜色,不好使


        mPopup.setBackgroundDrawable(new ColorDrawable(14000011));


        //给popup加一个动画


        //用到了style样式?????


        //怎么设置开始动画android:windowEnterAnimation和结束动画android:windowExitAnimation


        mPopup.setAnimationStyle(R.style.Popup_Style);


    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.Btn:
                //在某个组件的正下方显示popup


//                mPopup.showAsDropDown(mText);


                //后两个参数是设置偏移量


//                mPopup.showAsDropDown(mText, 10, 10);
                //在父控件的某个显示


                //参数1:某个父控件,参数2:设置对其方式,参数3,4  x,y轴偏移量


                mPopup.showAtLocation(findViewById(R.id.activity_main),Gravity.CENTER,0,0);


                break;
            case R.id.Popup_Text1:


                //判断PopupWindow是否显示


                if (mPopup.isShowing()) {


                    //让popup消失


                    mPopup.dismiss();
                }
                Toast.makeText(this, "heheda", Toast.LENGTH_SHORT).show();


                break;
            case R.id.Popup_Text2:
                Toast.makeText(this, "memeda", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值