关于Android4.4及以上状态栏渲染那点事
来源:互联网 发布:云墙vpn for mac 编辑:程序博客网 时间:2024/05/17 20:42
关键代码:
//渲染状态栏
// requestWindowFeature(Window.FEATURE_NO_TITLE);
//通知栏设为透明 android系统4.4以上才有效
// getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
上面两句代码放入Activity的onCreate(Bundle savedInstanceState)方法里,并且放在setContentView(R.layout.activity_main)之前就行了;
代码示例:`
@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); //通知栏设为透明 android系统4.4以上才有效 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //标题栏渐变 setContentView(R.layout.activity_redering); TextView tv = (TextView) findViewById(R.id.tv); LinearLayout root = (LinearLayout) findViewById(R.id.ll_reder); LinearLayout.LayoutParams pas = (LinearLayout.LayoutParams) root.getLayoutParams(); tv.setPadding(0, getStatusBarHeight(this), 0, 0); //pas.setMargins(0, getStatusBarHeight(this), 0, 0);}//返回状态栏高度public static int getStatusBarHeight(Context context){ Class<?> c = null; Object obj = null; Field field = null; int x = 0, statusBarHeight = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = context.getResources().getDimensionPixelSize(x); } catch (Exception e1) { e1.printStackTrace(); } return statusBarHeight;}
`
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/ll_reder"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ff00ff">
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Good" />
</LinearLayout>
</LinearLayout>
之所以会用LinearLayout嵌套一个LinearLayout,是想测试渲染效果,也就是说
如果不设置:tv.setPadding(0, getStatusBarHeight(this), 0, 0);
顶部状态栏效果如下图(顶部状态栏将悬浮在布局之上):
设置:tv.setPadding(0, getStatusBarHeight(this), 0, 0);
顶部状态栏效果如下图(顶部状态栏为tv的背景色):
设置:pas.setMargins(0, getStatusBarHeight(this), 0, 0);
顶部状态栏效果如下图(顶部状态栏为灰白):
最后来个原始的对比看看效果:
- 关于Android4.4及以上状态栏渲染那点事
- 沉浸式状态栏(Android4.4及以上)
- Android4.4及以上实现透明状态栏
- android4.4以上透明状态栏
- android4.4以上,实现状态栏颜色设置
- Android4.4以上沉浸式状态栏
- android4.4以上设置状态栏透明
- Android4.4以上实现沉浸式状态栏
- 首页增加沉浸式状态栏,仅支持android4.4及以上
- Android4.4以上实现沉浸式状态栏 及 低版本中使用Material设计
- Android4.4系统以上实现沉浸式状态栏
- 关于android4.4及以上版本无法恢复还原短信的问题记录与解决
- 关于android4.4及以上版本无法恢复还原短信的问题记录与解决
- android4.0以上pad隐藏状态栏
- android4.0以上pad隐藏状态栏
- android4.0以上平板 隐藏状态栏
- android4.0以上pad隐藏状态栏
- 关于性能优化的那点事——BigRender首屏渲染优化
- 写给想做前端或者已经在做前端的你
- iOS学习笔记 数据库SQLite
- nvm和nodejs安装使用(转)
- redis,memcache,mongodb对比
- Java 对文件夹的操作
- 关于Android4.4及以上状态栏渲染那点事
- Nginx与PHP的运行原理
- 自动轮转广告Android Image Slide
- android:src=""的用法
- 皇室战争挑战模式锦标赛概率分析
- 欢迎使用CSDN-markdown编辑器
- WebStorm开启Scss的Source Maps功能
- (iOS开发)UIScrollView的使用以及注意事项
- HYSBZ 2818 Gcd