android状态栏一体化
16lz
2021-01-23
支持 api >= 19
public class StatusBarWrapper {private static final String STATUS_BAR_HEIGHT_RES_NAME = "status_bar_height";private View mStatusBarView;public StatusBarWrapper(Activity activity) {if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {setupStatusBarView(activity);}}@TargetApi(19)private void setupStatusBarView(Activity activity) {Window win = activity.getWindow();WindowManager.LayoutParams winParams = win.getAttributes();final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;winParams.flags |= bits;win.setAttributes(winParams);mStatusBarView = new View(activity);LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, getStatusBarHeight(activity));params.gravity = Gravity.TOP;mStatusBarView.setLayoutParams(params);mStatusBarView.setBackgroundResource(R.color.main);//只能用idmStatusBarView.setVisibility(View.VISIBLE);((ViewGroup) activity.findViewById(android.R.id.content)).getChildAt(0).setFitsSystemWindows(true);((ViewGroup) win.getDecorView()).addView(mStatusBarView);}public void setBackgroundResource(int resId) {if(mStatusBarView != null) {mStatusBarView.setBackgroundResource(resId);}}public int getStatusBarHeight(Activity activity) {Resources res = activity.getResources();int result = 0;int resourceId = res.getIdentifier(STATUS_BAR_HEIGHT_RES_NAME, "dimen", "android");if (resourceId > 0) {result = res.getDimensionPixelSize(resourceId);}return result;}}
使用
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);new StatusBarWrapper(this).setBackgroundResource(R.color.bg_click);}}
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer