下面列出了android.view.Window#setCallback ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) {
if (createContextThemeWrapper) {
if (themeResId == ResourceId.ID_NULL) {
final TypedValue outValue = new TypedValue();
context.getTheme().resolveAttribute(R.attr.dialogTheme, outValue, true);
themeResId = outValue.resourceId;
}
mContext = new ContextThemeWrapper(context, themeResId);
} else {
mContext = context;
}
mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
final Window w = new PhoneWindow(mContext);
mWindow = w;
w.setCallback(this);
w.setOnWindowDismissedCallback(this);
w.setOnWindowSwipeDismissedCallback(() -> {
if (mCancelable) {
cancel();
}
});
w.setWindowManager(mWindowManager, null, null);
w.setGravity(Gravity.CENTER);
mListenersHandler = new ListenersHandler(this);
}
public static void attach(@NonNull Activity activity) {
if (activity instanceof AppCompatActivity) {
LayoutInflaterCompat.setFactory(activity.getLayoutInflater(),
new RobotoInflater(((AppCompatActivity) activity).getDelegate(), activity.getWindow()));
} else {
final Window window = activity.getWindow();
final Window.Callback callback = window.getCallback();
LayoutInflaterCompat.setFactory(activity.getLayoutInflater(),
new RobotoInflater(AppCompatDelegate.create(activity, StubAppCompatCallback.INSTANCE), window));
window.setCallback(callback);
}
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Window window = activity.getWindow();
Window.Callback callback= window.getCallback();
window.setCallback(new MonitorCallback(activity,callback));
}