>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 22473 个阅读者 刷新本主题
 * 贴子主题:  Appbarlayout+Recycleview滑动效果颜色渐变 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-12-31 23:04:11     消息  查看  搜索  好友  邮件  复制  引用

Appbarlayou随rv滚动达成相应效果
   appbarlayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
            @Override
            public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
                if (Math.abs(verticalOffset * 1.0f) / appBarLayout.getTotalScrollRange() == 1) {
                    img.setImageResource(R.mipmap.home_messa_r);//滑动图片渐变
                } else {
                    img.setImageResource(R.mipmap.home_messa);
                }
                //滑动toolbar渐变
                toolbar.setBackgroundColor(changeAlpha(getResources().getColor(R.color.colorPrimaryDark), Math.abs(verticalOffset * 1.0f) / appBarLayout.getTotalScrollRange()));
            
            }
        });

/**
     * 根据百分比改变颜色透明度
     */

    public int changeAlpha(int color, float fraction) {
        int red = Color.red(color);
        int green = Color.green(color);
        int blue = Color.blue(color);
        int alpha = (int) (Color.alpha(color) * fraction);
        return Color.argb(alpha, red, green, blue);
    }

  一般 配合recycleview使用  

recycleview.addOnScrollListener(new RecyclerView.OnScrollListener() {
            int scrollY = 0;
            @Override
            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
                super.onScrollStateChanged(recyclerView, newState);
                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
                    //未滚动
                    if (!recyclerView.canScrollVertically(-1) && scrollY < -10) {
                        //do somthing
                        appbarlayout.setExpanded(true, true);//通知AppBarLayout伸展
                        scrollY = 0;
                    }
                }
                //判断慢速滚动:当滚动到顶部时靠手指拖动后的惯性让RecyclerView处于Fling状态时的速度大于5时,让AppBarLayout展开
                if (newState == RecyclerView.SCROLL_STATE_SETTLING) {
                    //正在滚动中,惯性滚动
                    if (!recyclerView.canScrollVertically(-1) && scrollY < -5) {
                        //do somthing
                        appbarlayout.setExpanded(true, true);
                        scrollY = 0;
                    }
                }
            }
            @Override
            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                super.onScrolled(recyclerView, dx, dy);
                scrollY = dy;
            }
        });

原文链接:https://www.jianshu.com/p/06ed3f37d149



程序猿的技术大观园:www.javathinker.net

[这个贴子最后由 admin 在 2020-01-01 16:13:41 重新编辑]
  Java面向对象编程-->对象的生命周期
  JavaWeb开发-->自定义JSP标签(Ⅱ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->Vue组件开发基础
  Vue3开发-->创建综合购物网站应用
  Android 控件布局实现卡片效果,阴影效果
  android异步更新UI
  Android自动化测试之Robotium学习
  如何提高Android代码的安全性
  Android语音识别 android.speech 包分析
  Android性能优化技巧
  Android使用讯飞SDK开发语音识别及合成小Demo
  Android Camera2.0 结合ImageReader拍照并解决图片偏转问题
  Android 自定义九宫格手势锁
  Android-商品展示案例
  Android网络编程之Http通信
  Android访问WEBAPI,传递json
  【Android 修炼手册】Gradle 篇 -- Gradle 的基本使用
  Android中竖着的Tablayout的简单使用
  Android 判断当前设备是手机还是平板
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。