一個 popupwindow的小工具

一個 popupwindow的小工具

自己寫的一個popupWindow的小工具,簡化一下一些簡單popupWindow的創建。

ShowPopup:

import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.PopupWindow;

/**
 * Created by CKZ on 2017/7/10.
 */

public class ShowPopup {

    private  ShowPopup showPopup;

    private Context context;

    private LayoutInflater inflater;

    private View popView;

    private PopupWindow popupWindow;

    /**
     * 初始化
     * @param context
     */
    public ShowPopup (Context context){
        this.context = context;
        inflater = LayoutInflater.from(context);
        showPopup = this;
    }

    /**
     * 輸入佈局文件,設置popwindow
     * @param layoutId
     * @return
     */
    public ShowPopup showSimplePopupWindows(int layoutId){
        popView = inflater.inflate(layoutId,null);
        popupWindow = new PopupWindow(popView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        popupWindow.setFocusable(true);
        popupWindow.setOutsideTouchable(false);
        ColorDrawable dw = new ColorDrawable(0x30000000);
        popupWindow.setBackgroundDrawable(dw);
        return showPopup;
    }

    /**
     * 設置彈窗動畫
     * @param animId
     * @return showPopu
     */
    public ShowPopup setAnim(int animId){
       if (popupWindow!=null){
           popupWindow.setAnimationStyle(animId);
       }
       return showPopup;
    }

    /**
     * 將彈窗設置在底部
     * @param parent
     * @return
     */
    public ShowPopup atBottom(View parent){
        if (popupWindow!=null){
            popupWindow.showAtLocation(parent, Gravity.BOTTOM| Gravity.CENTER_HORIZONTAL,0,0);
        }
        return showPopup;
    }

    /**
     * 設置懸浮框位置,偏移量
     * @param paren
     * @param x
     * @param y
     * @return
     */
    public ShowPopup dropDown(View paren,int x,int y){
        if (popupWindow!=null){
            popupWindow.showAsDropDown(paren,x,y);
        }
        return showPopup;
    }

    /**
     * 設置彈窗的位置以及偏移量
     * @param parent
     * @param gravity
     * @param x
     * @param y
     * @return
     */
    public ShowPopup atLocation(View parent,int gravity,int x,int y){
        if (popupWindow!=null){
            popupWindow.showAtLocation(parent,gravity,x,y);
        }
        return showPopup;
    }


    /**
     * 設置佈局文件中控件的點擊事件
     * @param id
     * @param listener
     * @return
     */
   public ShowPopup setClick(int id,View.OnClickListener listener){
       if (popView!=null){
           popView.findViewById(id).setOnClickListener(listener);
       }
       return showPopup;
   }

    /**
     * 關閉彈窗的點擊事件
     * @param id
     * @return
     */
   public ShowPopup setDismissClick(int id){
       if (popupWindow!=null && popView!=null){
           popView.findViewById(id).setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View view) {
                   popupWindow.dismiss();
               }
           });
       }
       return showPopup;
   }

   public void closePopupWindow(){
       if (popupWindow!=null){
           popupWindow.dismiss();
       }
   }

    /**
     * 獲取view
     * @return
     */
   public View getView(){
       if (popView!=null){
           return popView;
       }
       return null;
   }
}
  • 創建簡單的底部popupWindow
 ShowPopup popu = new ShowPopup(MainActivity.this);
                popu.showSimplePopupWindows(R.layout.popu_windows_bottom)
                        .setAnim(R.style.Animation)
                        .atBottom(view)
                        .setClick(R.id.test1, new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Toast.makeText(MainActivity.this,"點擊了",Toast.LENGTH_SHORT).show();
                            }
                        }).setDismissClick(R.id.test2);

這裏寫圖片描述

  • 創建普通popupWindow
final ShowPopup popu = new ShowPopup(MainActivity.this);
                popu.showSimplePopupWindows(R.layout.popu_windows_bottom).dropDown(view,0,0)
                        .setClick(R.id.test1, new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                Toast.makeText(MainActivity.this,"點擊了1",Toast.LENGTH_SHORT).show();
                                popu.closePopupWindow();
                            }
                        }).setClick(R.id.test2, new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Toast.makeText(MainActivity.this,"點擊了2",Toast.LENGTH_SHORT).show();
                        popu.closePopupWindow();
                    }
                });

這裏寫圖片描述

  • 創建gridView樣式的底部彈窗
final ShowPopup popu = new ShowPopup(MainActivity.this);
                popu.showSimplePopupWindows(R.layout.popu_girde_bottom)
                        .setAnim(R.style.Animation)
                        .atBottom(view).setDismissClick(R.id.cancel_btn);
                RecyclerView recyclerView = (RecyclerView) popu.getView().findViewById(R.id.share_list);
                recyclerView.setLayoutManager(new GridLayoutManager(MainActivity.this,3));
                MyAdapter adapter = new MyAdapter(MainActivity.this,mData);
                recyclerView.setAdapter(adapter);
                adapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
                    @Override
                    public void OnItemClickListener(View view, int position) {
                        Toast.makeText(MainActivity.this,"點擊了"+position,Toast.LENGTH_SHORT).show();
                        popu.closePopupWindow();
                    }
                });

“`這裏寫圖片描述

源碼地址:https://github.com/c786909486/PopuTest/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章