FloatWindow.java 1.61 KB
package com.wd.common.floatingview;

import android.app.Activity;
import android.app.Application;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
/**
 * @Author :张泽昊
 * @Email :1064771680@qq.com
 * @Date :$ $
 * @Description :
 */
public class FloatWindow {
    private static Builder builder;

    private FloatWindow() {
    }

    public static IFloatingView get(){
        if (builder == null){
            return null;
        }
        return builder.floatingView;
    }

    public static Builder with(@NonNull Application context) {
        builder = new Builder(context);
        return builder;
    }

    public static class Builder {

        Application mContext;
        FloatLifecycle mFloatLifecycle;
        int mLayoutId;
        ViewGroup.LayoutParams mLayoutParam;
        Class<? extends Activity>[] mFilterActivities;
        IFloatingView floatingView;

        private Builder(Application context) {
            this.mContext = context;
            this.mFloatLifecycle = new FloatLifecycle().bind(mContext);
        }

        public Builder setLayoutId(int layoutId){
            this.mLayoutId = layoutId;
            return this;
        }

        public Builder setLayoutParam(ViewGroup.LayoutParams layoutParam){
            this.mLayoutParam = layoutParam;
            return this;
        }

        @SafeVarargs
        public final Builder setFilter(@NonNull Class<? extends Activity>... activities) {
            mFilterActivities = activities;
            return this;
        }

        public void build() {
            floatingView = new FloatingView(this);
        }

    }

}