package cm.android.sdk.widget;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.content.Context;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import java.util.concurrent.atomic.AtomicBoolean;
import cm.android.util.EnvironmentUtil;
public abstract class SysWindow {
private static final Logger logger = LoggerFactory.getLogger("SysWindow");
protected WindowManager.LayoutParams mLayoutParams;
protected AtomicBoolean show = new AtomicBoolean(false);
protected View rootView;
protected WindowManager mWindowManager;
public SysWindow(Context context) {
this.mWindowManager = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE));
this.mLayoutParams = initLayoutParams();
rootView = onCreateView(context);
}
protected abstract View onCreateView(Context context);
protected WindowManager.LayoutParams initLayoutParams() {
WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
if (EnvironmentUtil.SdkUtil.hasKitkat()) {
layoutParams.type = WindowManager.LayoutParams.TYPE_TOAST;
} else {
layoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
}
layoutParams.width = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
layoutParams.gravity = Gravity.CENTER;
return layoutParams;
}
public void hide() {
if (!show.get()) {
return;
}
if (rootView == null) {
return;
}
try {
this.mWindowManager.removeView(this.rootView);
show.set(false);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
public boolean isShow() {
return this.show.get();
}
public void show() {
if (show.get()) {
return;
}
if (rootView == null) {
return;
}
try {
this.mWindowManager.addView(this.rootView, this.mLayoutParams);
show.set(true);
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}