Android实现状态栏(statusbar)渐变效果的示例
文件大小: 104k
源码售价: 10 个金币 积分规则     积分充值
资源说明: Android 实现状态栏渐变效果的示例 本篇文章主要介绍了 Android 实现状态栏 (status bar) 渐变效果的示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 一、状态栏渐变效果的实现 状态栏渐变效果是指在 Android 应用程序中实现状态栏从一个颜色渐变到另一个颜色,达到视觉上的渐变效果。实现这种效果可以通过设置Theme、状态栏透明、使用SystemBarTint等方式来实现。 二、设置Theme方式 设置Theme方式是通过在 styles.xml 文件中添加以下代码来实现状态栏渐变效果: ```xml true ``` 这种方式实现起来比较简单,但是它会引起一些问题,如软键盘弹起bug、Fragment 不适应这种方式的优点等。 三、状态栏透明方式 状态栏透明方式是通过在 styles.xml 文件中添加以下代码来实现状态栏渐变效果: ```xml true ``` 这种方式实现起来比较简单,但是它也会引起一些问题,如软键盘弹起bug、Fragment 不适应这种方式的优点等。 四、SystemBarTint 方式 SystemBarTint 方式是通过使用 SystemBarTint 库来实现状态栏渐变效果。这种方式实现起来比较简单,只需要几行代码就可以实现。 五、作者的实现方式 作者的实现方式是通过拿到StatusBar View,然后设置其背景资源来实现状态栏渐变效果。作者的实现方式可以避免软键盘弹起bug、Fragment 不适应等问题。 作者使用反射机制来拿到StatusBar View: ```java private void initStatusBar() { if (statusBarView == null) { int identifier = getResources().getIdentifier("statusBarBackground", "id", "android"); statusBarView = getWindow().findViewById(identifier); } if (statusBarView != null) { statusBarView.setBackgroundResource("你的渐变drawable资源id"); } } ``` 然后,作者使用 Looper.myQueue().addIdleHandler() 来保证StatusBar绘制完成后再findview: ```java Looper.myQueue().addIdleHandler(new MessageQueue.IdleHandler() { @Override public boolean queueIdle() { if (isStatusBar()) { initStatusBar(); getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { initStatusBar(); } }); } return false; } }); ``` finally,作者使用 addOnLayoutChangeListener 监听布局变化,来保证状态栏背景颜色的变化: ```java getWindow().getDecorView().addOnLayoutChangeListener(new View.OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { initStatusBar(); } }); ``` 作者的实现方式可以避免软键盘弹起bug、Fragment 不适应等问题,实现了状态栏渐变效果。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。