DecorView的示例
public class SampleDecorView {
private final Activity activity;
public SampleDecorView(Activity activity) {
this.activity = activity;
}
public final void fg(boolean show) {
FrameLayout decor = getDecorView(activity);
if (decor == null) {
return;
}
if (show) {
Drawable dr = activity.getResources().getDrawable(R.color.decor_foreground);
//设置前景色,发现decorview占满整个屏幕
decor.setForeground(dr);
} else {
decor.setForeground(null);
}
}
public final void nav(boolean add) {
FrameLayout decor = getDecorView(activity);
if (decor == null) {
return;
}
if (add) {
Drawable dr = activity.getResources().getDrawable(R.color.decor_foreground);
View nav = decor.getChildAt(1);
nav.setBackground(dr);
}
}
//追加或取消视图到decroView
public final void view(boolean add) {
FrameLayout decor = getDecorView(activity);
if (decor == null) {
return;
}
if (add) {
Drawable dr = activity.getResources().getDrawable(R.color.decor_foreground);
View view = new View(activity);
view.setBackground(dr);
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
lp.leftMargin = 50;
lp.rightMargin = 50;
lp.topMargin = 50;
lp.bottomMargin = 50;
decor.addView(view, lp);
} else {
//最先remove可见的是nav,之后上是content和actionbar
decor.removeViewAt(decor.getChildCount() - 1);
}
}
//获取当前Activity的decorview
private static FrameLayout getDecorView(Activity activity) {
View view = activity.getWindow().getDecorView();
if (view instanceof FrameLayout) {
//decorview是一个Framelayout
return (FrameLayout) view;
}
return null;
}
}