最近发现不少app中有这样的效果,滑动界面时,标题栏颜色渐变。分析了一下,感觉挺简单的,写了个小demo练手。

最终效果图

从上图效果来作分析,首先,RecyclerView滑动,标题栏背景由透明转换为深红色,滑动的距离是标题栏的高度,超过此高度标题栏背景色固定不变

JAVA

package cn.pan.slidesample;import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;import java.util.ArrayList;
import java.util.List;public class MainActivity extends FragmentActivity {private ArrayList dataList;private RecyclerView mRecyclerView;private int mDistanceY;private Toolbar mToolbar;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);loadData();initView();}private List loadData() {dataList = new ArrayList();for (int i = 0; i < 20; i++) {dataList.add("item" + i);}return dataList;}private void initView() {mToolbar = (Toolbar) findViewById(R.id.toolbar);if (mRecyclerView == null) {mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);}mRecyclerView.setLayoutManager(new LinearLayoutManager(this));mRecyclerView.setAdapter(new DataAdapter(this, dataList));mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {//滑动的距离mDistanceY += dy;//toolbar的高度int toolbarHeight = mToolbar.getBottom();//当滑动的距离 <= toolbar高度的时候,改变Toolbar背景色的透明度,达到渐变的效果if (mDistanceY <= toolbarHeight) {float scale = (float) mDistanceY / toolbarHeight;float alpha = scale * 255;mToolbar.setBackgroundColor(Color.argb((int) alpha, 128, 0, 0));} else {//上述虽然判断了滑动距离与toolbar高度相等的情况,但是实际测试时发现,标题栏的背景色//很少能达到完全不透明的情况,所以这里又判断了滑动距离大于toolbar高度的情况,//将标题栏的颜色设置为完全不透明状态mToolbar.setBackgroundResource(R.color.colorTitle);}}});}}

NOTE: 代码实现的关键是监听了RecyclerView的滑动距离,addOnScrollListener该方法回调返回每次滑动的距离,我们在回调方法onScrolled()中做逻辑的处理。代码中的注释已经写的很清楚了。注意:这里的数据类型千万别搞错了。

XML

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="cn.pan.slidesample.MainActivity"><android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?android:actionBarSize"><TextView
            android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:textColor="@color/colorPrimary"android:text="@string/app_name" /></android.support.v7.widget.Toolbar><android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"android:layout_width="match_parent"android:layout_height="match_parent" /></LinearLayout>

扩展:

经常使用美团外卖的小伙伴应该发现了,这个效果跟美团的有点类似。美团的标题栏是滑动时,把整个标题栏的透明度做了修改(包括里面的文字内容,上述只是修改了背景色),直到透明度完全为0的时候,重新显示了一个新的view。

这个原理是一样的,根据滑动的距离界限,设置标题的透明度View.setalpha(),然后setVisiable()就行了,小伙伴门可以去尝试一下

滑动改变标题栏的颜色相关推荐

  1. 获取listView上滑距离,根据这个距离改变标题栏颜色

    1.继承ListView 2.重写onScrollchanged方法,在这个方法中调接口,在主页面实现接口 3.得到liostView的滑动距离,不断在onScrollchanged方法中调用 下面是 ...

  2. 标题栏透明android,android改变标题栏的透明度

    类似这种效果,想必大家都看过,如某宝的商品详情页,小米商城首页等... 我们这里是自定义一个ScrollView去监听控件的滑动,然后不断去改变标题栏的透明度. /** *    Created by ...

  3. Android Studio更改标题栏的颜色

    Android Studio更改标题栏的颜色 第一步,在value的colors.xml文件夹中添加两个颜色.如下: #FFFFFF #000000 1 2 第二步,在value的style.xml文 ...

  4. PS改变icon图标颜色

    在项目中经常会遇到要改变图标的颜色,比如说我遇到的这个,要求默认状态下图标为蓝色,当鼠标放在图标上时,图标变为橙色,当然这些事情都是设计的事情,由于我做练习的psd图不是很全,很多事情得自己上手,在这 ...

  5. WPF修改窗体标题栏的颜色

    WPF程序通常情况下没办法修改窗体标题栏的样式,包括标题栏的背景颜色. 不过借助一个叫Fluent.Ribbon的第三方控件,貌似可以修改标题栏的背景颜色. 可以通过NuGet来安装这个控件:Inst ...

  6. Android 天气APP(二十一)滑动改变UI、增加更多天气数据展示,最多未来15天天气预报

    上一篇:Android 天气APP(二十)增加欢迎页及白屏黑屏处理.展示世界国家/地区的城市数据 前言   写APP是有很多细节需要处理的,这些细节可以提高你的APP的使用概率.这已经是第二十一篇文章 ...

  7. 创建一个简单的应用程序窗口,显示“欲穷千里目 更上一层楼”。这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红、绿、黄、蓝,四种字体分别为宋体、楷

    创建一个简单的应用程序窗口,显示"欲穷千里目 更上一层楼".这一行文字从窗口中向左滚动显示,而且每显示一轮,改变一次颜色,改变一次字体,一个周期为4种颜色,分别为红.绿.黄.蓝,四 ...

  8. 把主框架窗口设置为圆角矩形,并改变外围边框颜色

    最近需要把主框架窗口设置为圆角矩形,并且替换掉边框颜色.程序中已经隐藏掉标题栏,菜单栏,工具栏,因此边框不是蓝色,而是系统颜色. 改变外围边框颜色是在void CMainFrame::OnNcPain ...

  9. 积跬步,聚小流------ps有用小技巧,改变png图标颜色

    积跬步,聚小流------ps有用小技巧,改变png图标颜色 *  实现效果: 原图:  改动后: *  实现目的: 满足为实现不同界面色彩搭配改动png图标的颜色 *  实现方法: 1.打开Phot ...

最新文章

  1. 如何用 TensorFlow 实现生成式对抗网络(GAN)
  2. 易语言基础编程知识〖E语言手册〗
  3. 网络编程学习笔记(ICMPv6和IPv6套接口选项)
  4. java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解...
  5. 生信分析和美图资源推荐!!!
  6. d3 v4 api interpolate
  7. protobuf使用错误总结
  8. qt结合arcgis for qt加载tpk文件(离线地图)
  9. AppScan下载安装教程
  10. 计算机二级C语言选择题总结
  11. 求解会议安排问题 C++实现
  12. 后台管理系统——02首页布局
  13. 关于2014年相关人脸检测识别的几个论文摘要翻译
  14. 【2019-2020春学期】数据库实验大作业
  15. Metadata 元数据信息详解
  16. thinkphp5.1+uniapp+mysql5.7开发的朋友圈社区程序源码
  17. 移远M26实现短信接收
  18. 别人教我学计算机的作文,我教舅妈学电脑优秀作文.doc
  19. 如何解决C++编译错误C2280尝试引用已删除的函数【每天一个小技巧】
  20. 大小口圆锥台计算机,2011年对口单招计算机试卷A04(18页)-原创力文档

热门文章

  1. 【深度学习】CNN模型处理简单时间序列
  2. 360桌面助手计算机打不开怎么办,桌面助手360【处理指南】
  3. 图像处理:显著性区域检测总结(二)
  4. 域名赎回期要多长时间
  5. Python爬虫分析微博热搜关键词(代码已过时,仅供参考)
  6. python之读报文
  7. linux ubuntu3d桌面,桌面应用|如何在 Ubuntu 中播放3D电影
  8. 【帮转】浙大未企2109届X计划创业实践开启——创燃花火,意点未来
  9. 【私有git】使用docker搭建gitlab-ce中文社区版服务器
  10. python下载量化策略_掘金量化Python经典策略.pdf