PopupWindow使用

PupupWindow 表示显示一个窗口的意思


   private LinearLayout linealayout;
    private PopupWindow pw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        linealayout = findViewById(R.id.linealayout);
    }
    public void onclickView(View view){
        TextView tv = new TextView(this);
        tv.setText("POPUWINDOWN.....");
        tv.setTextColor(Color.RED);
        tv.setTextSize(30);
        /**
         * 参数一  显示内容
         * 参数二  显示内容的宽高
         * 参数三  显示内容的高度
         */
        pw = new PopupWindow(tv,400,100);
        pw.setBackgroundDrawable(new ColorDrawable(Color.GREEN));
        /**
         * 参数一  挂载到哪一个父控件上面
         * 参数二  空间角度对其
         * 参数三  距离左边的距离
         * 参数四  距离头部的距离
         */
        pw.showAtLocation(linealayout, Gravity.LEFT+Gravity.TOP,100,200);

    }
    //当页面不可见是关闭popupWindow
    @Override
    protected void onDestroy() {
        super.onDestroy();
        pw.dismiss();
    }


在这里我看了一篇文章觉得还可以

一、怎么设置动画

1、在value文件夹下的styles中设置上style

2、在调用PopupWindow的setAnimationStyle(R.style.XXX);

3、对PopupWindow的update方法的理解:

    (1)这个方法是重新设置PopupWindow的状态的

    (2)这个方法有很多的重构方法,量具体情况而用

    (3)看如下代码:

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_main);
  5. initPopup();
  6. }
  7. PopupWindow popup;
  8. View contentView;
  9. public void onClick(View view) {
  10. int id = view.getId();
  11. if (id == R.id.btn1) {
  12. 1popup.showAsDropDown(view);
  13. 2、popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
  14. 3、popup.update();
  15. 4、popup.update();
  16. }
  17. if (id == R.id.btn2) {
  18. popup.showAsDropDown(view);
  19. }
  20. }
  21. private void initPopup() {
  22. contentView = LayoutInflater.from( this).inflate(
  23. R.layout.popup_select_mode, null);
  24. popup = new PopupWindow(contentView, LayoutParams.WRAP_CONTENT,
  25. LayoutParams.WRAP_CONTENT, true);
  26. popup.setBackgroundDrawable(getResources().getDrawable(
  27. android.R.color.white));
  28. }

二、update方法

     1、无参和有参的update的共同点:

  1. popup.showAsDropDown(view);
  2. popup.setAnimationStyle(R.style.PopupAnimation1111111111111);

      当在PopupWindow显示过程(调用了showAsDropDown中改变了PopupWindow的设置,如果没有调用update

     方法,那么这个设置只能在下次显示的时候才会有效果,如果显示过程(调用了showAsDropDown,有更

     PopupWindow的设置,并且立即调用了update方法,那么这次的显示也会按照更新后的设置来显示

     2、无参和有参的update的区别:

  1. popup.showAsDropDown(view);
  2. popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
  3. popup.update( 500, 400);

因为是在显示过程中更新的,所以这一次显示会显示更新后的内容,内容包括动画和高宽

  1. popup.showAsDropDown(view);
  2. popup.setAnimationStyle(R.style.PopupAnimation1111111111111);
  3. popup.update();

在这次的显示过程中,只是应用了动画。


你可能感兴趣的:(Android)