>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 28298 个阅读者 刷新本主题
 * 贴子主题:  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与Hibernate开发-->映射组成关系
  Java网络编程-->安全网络通信
  精通Spring-->
  Vue3开发-->Vue Router路由管理器
  Android定义的路径全局变量汇总
  Android的Service和广播的讲解
  通过Https访问的Not trusted Server Certificate的问题的解决...
  Android Broadcast receiver 编程
  Android 事件处理
  Android开发实践:编译VLC-for-Android
  Android的Service和广播的讲解
  Android在SDcard建文件夹(在Android中移动文件必用)
  Android SearchView 搜索框
  Android平台概述
  Android Broadcast receiver 编程-Mobile and Linux Develop...
  自定义ViewGroup和FrameLayout实现轮播图(包括底部小圆点)
  Android 服务(Service)
  Android_实现商品详情的展示页及布局
  RecyclerView顶部阴影透明度渐变效果
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


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