android状态栏自定义,如何自定义Android状态栏颜色

这篇博客主要介绍了如何在Android应用中实现自定义主题颜色,并针对不同API级别进行状态栏颜色的适配。代码示例展示了如何在AndroidManifest.xml中配置透明状态栏,以及在Java代码中动态设置状态栏颜色,包括对Android 21及以上版本和19到21之间的版本的处理方式。
摘要由CSDN通过智能技术生成

// 定义颜色值

private int[] statusColors = new int[]{R.color.color1_, R.color.color2_,

R.color.color3_, R.color.color4_, R.color.color5_};

// 设置Theme

setCurrentTheme(ContextCompat.getColor(MainActivity.this, statusColors[currentColor]));

private void setCurrentTheme(int statusColor) {

if (Build.VERSION.SDK_INT >= 21) {

getWindow().getDecorView().setSystemUiVisibility(

View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);

getWindow().setStatusBarColor(statusColor);

} else if (Build.VERSION.SDK_INT >= 19 && Build.VERSION.SDK_INT < 21) {

WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();

localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS |

localLayoutParams.flags);

ViewGroup contentView = (ViewGroup) findViewById(android.R.id.content);

View statusBarView = contentView.getChildAt(0);

if (statusBarView != null && statusBarView.getMeasuredHeight() == getStatusBarHeight(this)) {

statusBarView.setBackgroundColor(statusColor);

return;

}

statusBarView = new View(this);

ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,

getStatusBarHeight(this));

statusBarView.setBackgroundColor(statusColor);

contentView.addView(statusBarView, lp);

}

}

// values-v19

false

true

true

true

//values-v21

false

true

true

@android:color/black

true

android:name=".MainActivity"

android:configChanges="orientation|screenSize"

android:label="@string/app_name"

android:launchMode="singleTask"

android:screenOrientation="portrait"

android:theme="@style/AppTheme.NoActionBar">

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值