【android全屏与非全屏切换时Toolbar的显示,仿微信漂流瓶效果】Toolbar已经代替了actionbar,特别是在4.4或更高版本上可以有沉浸式效果,要使用Toolbar还要配置相关的Noactionbar style样式,但是如果在全屏与非全屏切换时,如何使用Toolbar并实现沉浸式样式,又要保证界面布局在全屏与非全屏时大小不会改变.
更多文章请关注:http://blog.csdn.net/u012216274 先看效果图吧, 这是4.4以下效果
文章图片
4.4或更高版本效果
文章图片
1:要使用Toolbar,实现沉浸式所以样式得使用Noactionbar, 并设置windowFullscreen 为true
文章图片
2:Toolbar布局与设置, 这里不能使用LinearLayout,否则界面中的布局内容会在toolbar内容下面
/**
* 由于全屏时转非全屏时界面中的布局大小不能改变,所以不能使用流行的在windows中添加一个
* Status 高度的控件来填充内容,直接使用toolbar设置padding效果
* @param activity
* @param toolbar
*/
public static void setStatusBarColor(Activity activity, Toolbar toolbar) {
if (toolbar.getTag() == null ) {
ViewGroup.LayoutParams params = toolbar.getLayoutParams();
int statusHeight = getStatusHeight(activity);
params.height += statusHeight;
toolbar.setLayoutParams(params);
toolbar.setPadding(toolbar.getPaddingLeft(), toolbar.getPaddingTop() + statusHeight,
toolbar.getPaddingRight(), toolbar.getPaddingBottom());
toolbar.setTag(true);
//toolbar默认有16dp的margin值,可以设置为0,或在布局中配置
toolbar.setContentInsetsRelative(0,0);
}
if (hasKitKat()) {//设置显示toolbar时的样式
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
}
3:最后就是些全屏与非全屏时的设置与动画
private void full(boolean enable) {
if (!enable){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
//非全屏
mToolbar.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.top_translate_enter);
mToolbar.setAnimation(animation);
ConfigUtils.setStatusBarColor(MainActivity.this, mToolbar);
mToolbar.setVisibility(View.VISIBLE);
animation.start();
}else{
mToolbar.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(this, R.anim.top_translate_exit);
mToolbar.setAnimation(animation);
animation.start();
mToolbar.setVisibility(View.GONE);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
//清除非全屏的flag
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
//设置全屏的flag
}
}
最后附上源码 http://download.csdn.net/detail/u012216274/9818772
更多文章请关注:http://blog.csdn.net/u012216274