下面列出了怎么用android.support.v4.view.OnApplyWindowInsetsListener的API类实例代码及写法,或者点击链接到github查看源代码。
public static void setStatusBarColor(Activity activity, int statusColor) {
Window window = activity.getWindow();
window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9);
window.addFlags(Integer.MIN_VALUE);
window.setStatusBarColor(statusColor);
window.getDecorView().setSystemUiVisibility(0);
View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0);
if (mChildView != null) {
ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() {
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
return insets;
}
});
ViewCompat.setFitsSystemWindows(mChildView, true);
ViewCompat.requestApplyInsets(mChildView);
}
}
public static void translucentStatusBar(Activity activity, boolean hideStatusBarBackground) {
Window window = activity.getWindow();
window.addFlags(Integer.MIN_VALUE);
if (hideStatusBarBackground) {
window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9);
window.setStatusBarColor(0);
window.getDecorView().setSystemUiVisibility(FimiAppContext.UI_HEIGHT);
} else {
window.addFlags(NTLMConstants.FLAG_UNIDENTIFIED_9);
window.getDecorView().setSystemUiVisibility(0);
}
View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0);
if (mChildView != null) {
ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() {
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
return insets;
}
});
ViewCompat.setFitsSystemWindows(mChildView, false);
ViewCompat.requestApplyInsets(mChildView);
}
}
public static void setStatusBarColorForCollapsingToolbar(Activity activity, AppBarLayout appBarLayout, CollapsingToolbarLayout collapsingToolbarLayout, Toolbar toolbar, int statusColor) {
Window window = activity.getWindow();
window.clearFlags(NTLMConstants.FLAG_UNIDENTIFIED_9);
window.addFlags(Integer.MIN_VALUE);
window.setStatusBarColor(0);
window.getDecorView().setSystemUiVisibility(0);
View mChildView = ((ViewGroup) window.findViewById(16908290)).getChildAt(0);
if (mChildView != null) {
ViewCompat.setOnApplyWindowInsetsListener(mChildView, new OnApplyWindowInsetsListener() {
public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) {
return insets;
}
});
ViewCompat.setFitsSystemWindows(mChildView, true);
ViewCompat.requestApplyInsets(mChildView);
}
((View) appBarLayout.getParent()).setFitsSystemWindows(true);
appBarLayout.setFitsSystemWindows(true);
collapsingToolbarLayout.setFitsSystemWindows(true);
collapsingToolbarLayout.getChildAt(0).setFitsSystemWindows(true);
toolbar.setFitsSystemWindows(false);
collapsingToolbarLayout.setStatusBarScrimColor(statusColor);
}
private static void setWindowInsets(final View mainLayout,
final Rect windowInsets) {
ViewCompat.setOnApplyWindowInsetsListener(mainLayout, new OnApplyWindowInsetsListener() {
@Override
public WindowInsetsCompat onApplyWindowInsets(View v,
WindowInsetsCompat insets) {
if (insets.hasSystemWindowInsets()) {
int left = insets.getSystemWindowInsetLeft();
int top = insets.getSystemWindowInsetTop();
int right = insets.getSystemWindowInsetRight();
int bottom = insets.getSystemWindowInsetBottom();
mainLayout.setPadding(left, top, right, bottom);
if (windowInsets != null) {
windowInsets.set(left, top, right, bottom);
}
}
return insets.consumeSystemWindowInsets();
}
});
}