博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android--------工具类StatusBarUtil实现完美状态栏
阅读量:4537 次
发布时间:2019-06-08

本文共 3881 字,大约阅读时间需要 12 分钟。

很早就想写这篇博客了,直到前几天有人问我这方面的问题才想起。

沉浸式状态栏是从android Kitkat(Android 4.4)开始出现的,顶部状态栏的颜色可以根据开发需求改变,使得APP风格更加好看,更加美观。

这是一个为Android App 设置状态栏的工具类, 可以在4.4及其以上系统中实现 沉浸式状态栏/状态栏变色,支持设置状态栏透明度。

先来看看案例的效果图:

                

 

第一个是图片,其他的Fragment则是随机产生颜色。

使用工具类 build.gradle引入

compile 'com.jaeger.statusbaruitl:library:1.3.0'

 

StatusBarUtil具体源码 :https://github.com/laobie/StatusBarUtil

 

如何更好的改变状态栏颜色? 可以在BaseActivity中写一个方法,如果某个Activity的颜色改变,则重新修改即可。

public class BaseActivity extends AppCompatActivity {    @Override    public void setContentView(int layoutResID) {        super.setContentView(layoutResID);        setStatusBar();    }    protected void setStatusBar() {        StatusBarUtil.setColor(this, getResources().getColor(R.color.colorPrimary));    }}

 

我的案例的Activity

public class MainActivity extends BaseActivity {    private ViewPager mVpHome;    private BottomNavigationBar mBottomNavigationBar;    private ArrayList
mFragmentList = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView(){ mVpHome = (ViewPager) findViewById(R.id.viewpager); mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar); mBottomNavigationBar.addItem(new BottomNavigationItem(R.drawable.ic_favorite, "One")) .addItem(new BottomNavigationItem(R.drawable.ic_gavel, "Two")) .addItem(new BottomNavigationItem(R.drawable.ic_grade, "Three")) .addItem(new BottomNavigationItem(R.drawable.ic_group_work, "Four")) .initialise(); mBottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() { @Override public void onTabSelected(int position) { mVpHome.setCurrentItem(position); switch (position) { case 0: break; default: Random random = new Random(); int color = 0xff000000 | random.nextInt(0xffffff); if (mFragmentList.get(position) instanceof SimpleFragment) { ((SimpleFragment) mFragmentList.get(position)).setTvTitleBackgroundColor(color); } break; } } @Override public void onTabUnselected(int position) { } @Override public void onTabReselected(int position) { } }); mFragmentList.add(new ImageFragment()); mFragmentList.add(new SimpleFragment()); mFragmentList.add(new SimpleFragment()); mFragmentList.add(new SimpleFragment()); mVpHome.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mBottomNavigationBar.selectTab(position); } @Override public void onPageScrollStateChanged(int state) { } }); mVpHome.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } }); } /*** * 重写,利用工具类 StatusBarUtil进行修改 */ @Override protected void setStatusBar() { StatusBarUtil.setTranslucentForImageViewInFragment(MainActivity.this, null); }}

 

别忘了style中

 

由于代码太多,就不一一贴出来了,源码直接下载即可

转载于:https://www.cnblogs.com/zhangqie/p/7603047.html

你可能感兴趣的文章
POSTMAN-REST Client
查看>>
数据分析师必须掌握的知识结构
查看>>
JRainbow开发进度
查看>>
Linux下安装 jdk
查看>>
雷林鹏分享:XML 总结 下一步学习什么呢?
查看>>
信息存储与管理-读书笔记1
查看>>
openj 4004 01背包问题求方案数
查看>>
超市收银系统之——3
查看>>
数组0元素后置算法
查看>>
web.xml文件详解
查看>>
删除排序数组中的重复数字
查看>>
Linux下MySQL安装配置
查看>>
SQL之排序检索(order by子句)
查看>>
Python_内置函数2_44
查看>>
kettle-SQL文件输出
查看>>
TeeChart 的应用
查看>>
sybase powerdesigner 16.5注册码
查看>>
错误:已经有针对IP 192.168.1.107:8000的侦听,原因是因为这个行为配置,去掉后服务Open成功...
查看>>
android的listview中getview()的问题
查看>>
switch语句
查看>>