标题和状态栏滑动渐变(2)-Android
theme: smartblue
小知识,大挑战!本文正在参与「程序员必备小知识」创作活动
本文已参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金。
前言
在上一篇文章中我们成功的获取了recyclerview的滑动距离,这一篇我们将根据滑动距离对我们的状态栏和标题栏进行渐变处理.
首先我们要先定义一个固定的距离,是我们切换渐变状态的判断依据,比如这个距离是300,那么在300以内我们将对标题进行字体渐渐变黑,渐渐变白,状态栏图标也是如此.当滑动距离慢慢缩小,也就是上划时,标题的字体将会慢慢变白,背景渐渐透明.
首先我们先定义一个固定值,我这边设置为100dp
int S100 = ImageUtil.dp2px(this, 100);
ImageUtil.dp2px
是一个工具类,将dp转化为px,要屏幕适配的嘛,你们可以用自己项目中的转换类,这里我贴一下我们的工具类吧
``` public class ImageUtil {
/**
* @param context
* @param dp
* @return dip转pix
*/
public static int dp2px(Context context, float dp) {
if (context != null && dp != 0) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dp * scale + 0.5f);
}
return (int) dp;
}
} ```
第二步,我们要判断recyclerview滑动的距离是否已经超过我们定义的固定距离,然后给状态栏切换图标颜色
``` if (test < S100) { ImmersionBar.with(this).statusBarDarkFont(false).init();
} else {
ImmersionBar.with(this).statusBarDarkFont(true).init();
}
``
[ImmersionBar](https://github.com/gyf-dev/ImmersionBar)
是一个状态栏的三方库,咱们国家android魔改的系统非常多,什么小米,魅族,华为,oppo,vivo,他们机型有的可以使用Google官方提供的Api来进行适配状态栏有的就必须要到他们官方的开发者网站查找相应的设置方法,为了减少这种非必要的工作量,直接引用三方库是我们的最佳选择.`
第三步,我们的滑动回调当滑动到最上面时会滑动回调返回0,我们也要加一个判断,来设置相应颜色
if (test < S100) {
ImmersionBar.with(this).statusBarDarkFont(false).init();
if (test == 0) {
mTv.setTextColor(ContextCompat.getColor(this, R.color.white));
mTv.setBackgroundColor(ContextCompat.getColor(this, R.color.trans));
} else {
int alpha = test * 255 / S100;
mTv.setTextColor(Color.argb(alpha, 0, 0, 0));
mTv.setBackgroundColor(Color.argb(alpha, 255, 255, 255));
}
} else {
ImmersionBar.with(this).statusBarDarkFont(true).init();
}
当我们滑动到最顶端时,将字体设置为白色,背景颜色设置为透明。
int alpha = test * 255 / S100;
test
是我们传递过来的参数,也就是滑动距离,S100
是上面一开始就说的滑动判断固定值.通过这么计算得出我们最终要设置的alpha
.
Color.argb()
这个就更简单了,就是为颜色设置alpha
,后面是RGB
颜色而已.来看看效果吧
好了,效果完成,拜拜┏(^0^)┛
- 学习Android的第十七天
- 这是一个吸猫文章的标题,甚至可以有两行这么多哦
- 学习Android的第四天
- 学习Android的第一天
- 含有边框的TextView-Android
- 电池-Android
- 倒计时封装-Android
- 标题和状态栏滑动渐变(2)-Android
- 标题和状态栏滑动渐变(1)-Android
- 关于选项卡三方库FlycoTabLayout的使用及修改
- 关于第三方库SmartTabLayout的一点小修改
- 关于递归反转链表的思路
- 搜索历史记录的实现-Android
- 感觉让人耳目一新的动画库Lottie
- Android-关于设备唯一ID的奇技淫巧
- 稍微巧妙的双模块联动-ViewPager
- 动画库NineOldAndroids实战自定义悬浮窗
- 关于项目中圆角及特殊圆角的实际使用问题
- 自定义TextView可控制Drawable大小