吸顶效果的另一种实现

Android RecyclerView 之 吸顶效果 青山不改,绿水长流 有缘江湖再见 ~ 阅读详情

 

前面介绍过一篇文章,是使用ItemDecoration来实现吸顶效果,使用起来很解耦,简单,方便,但是优缺点是拓展性比较差,今天就通过另一种方式来实现吸顶效果,并且吸顶栏可以高度制定布局和交互,步入正题,下面来实现它,先看看效果图:

一、实现原理

头部的内容位于Recycleview上面,监听Recycleview的滑动,当Recycleview的分组item顶部接触到头部的内容布局底部时候,浮层随处Recycleview的上滑而上推,当分组完全到达顶部时候,浮层复位,这样吸顶效果就产生了,依据这个思路来实现吸顶效果。

二、布局文件实现

1、抽取公共的吸顶布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/sticky_text"
            android:layout_width="match_parent"
            android:layout_height="@dimen/head_top"
            android:background="@color/bg_header"
            android:gravity="center_vertical"
            android:paddingLeft="@dimen/sticky_text_margin"/>

    </LinearLayout>

2、MainActivity

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="cn.com.stickyrecycleview.MainActivity">

        <!--内容栏-->
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recycleview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

        <!--吸顶栏-->
        <include layout="@layout/sticky_layout"/>

    </FrameLayout>

三、Adapter实现

1、布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:orientation="vertical">

        <!--分组栏-->
        <include layout="@layout/sticky_layout"/>

        <!--内容栏-->
        <TextView
            android:id="@+id/tv_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="@string/app_name"/>
    </LinearLayout>

布局文件里面包含两个View,一个是分组的View,一个是内容item的View,需要注意的是分组的View一定要和吸顶的View一致,这里为了方便期间,都设置为一个TextView。当需要展示分组的是让分组的View为VISIBLE,否则GONE掉。

 2、onBindViewHolder

    //无吸顶
    public static final int NONE_STICKY_VIEW = 0;
    //有吸顶
    public static final int HAS_STICKY_VIEW = 1;
    //第一个
    public static final int FIRST_STICKY_VIEW = 2;

onBindViewHolder是核心处理方法,如果是第0个,肯定是吸顶,设置tag:FIRST_STICKY_VIEW。如果是其他的,当前的分组依据和上一个一致,则认为是同一组,不展示分组item,设置tag:NONE_STICKY_VIEW,否则是不同组,展示分组item,设置tag:HAS_STICKY_VIEW。最后通过ContentDescription方法来记录并获取要吸顶展示的信息。详细如下备注:

     @Override
     public void onBindViewHolder(ViewHolder holder, int position) {
         DataBean dataBean = mDataList.get(position);
         if (position == 0) {
             //第0个展示吸顶栏,设置tag:FIRST_STICKY_VIEW
             holder.stickyText.setVisibility(View.VISIBLE);
             holder.stickyText.setText(dataBean.data);
             holder.itemView.setTag(FIRST_STICKY_VIEW);
         } else {
             if (!TextUtils.equals(dataBean.data, mDataList.get(position - 1).data)) {
                 //和上一个分组的依据不同,展示吸顶栏,设置tag:HAS_STICKY_VIEW
                 holder.stickyText.setVisibility(View.VISIBLE);
                 holder.stickyText.setText(dataBean.data);
                 holder.itemView.setTag(HAS_STICKY_VIEW);
             } else {
                 //其他的,隐藏分组栏
                 holder.stickyText.setVisibility(View.GONE);
                 holder.itemView.setTag(NONE_STICKY_VIEW);
             }
         }
         holder.textView.setText(dataBean.des);
         // ContentDescription 用来记录并获取要吸顶展示的信息
         holder.itemView.setContentDescription(dataBean.data);
     }

四、滑动监听

最后需要通过addOnScrollListener方法监听Recycleview的滑动,来控制吸顶变化,原理看备注:

    recycleview.addOnScrollListener(new RecyclerView.OnScrollListener() {

                @Override
                public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                    super.onScrolled(recyclerView, dx, dy);
                    //找到RecyclerView的item中,和RecyclerView的getTop 向下相距5个像素的那个item,
                    //该方法是根据坐标获取item的View,坐标点是以RecyclerView控件作为坐标轴,并不是以屏幕左上角作为坐标原点。
                    View stickyInfoView = recyclerView.findChildViewUnder(stickyText.getMeasuredWidth() / 2, 5);
                    if (stickyInfoView != null && stickyInfoView.getContentDescription() != null) {
                        //设置吸顶栏内容
                        stickyText.setText(String.valueOf(stickyInfoView.getContentDescription()));
                    }
                    //找到固定在顶部的View的下面一个item的View
                    View transInfoView = recyclerView.findChildViewUnder(stickyText.getMeasuredWidth() / 2, stickyText.getMeasuredHeight() + 1);
                    if (transInfoView != null && transInfoView.getTag() != null) {
                        //获取该View的tag
                        int transViewStatus = (int) transInfoView.getTag();
                        int dealtY = transInfoView.getTop() - stickyText.getMeasuredHeight();
                        if (transViewStatus == MyAdapter.HAS_STICKY_VIEW) {
                            if (transInfoView.getTop() > 0) {
                                //最上面的itemView没滑出屏幕,给顶部的View设置,
                                //注意setTranslationY移动的ViewGroup,而scrollTo()/scrollBy()移动的是View的内容,如文字、图片等
                                stickyText.setTranslationY(dealtY);
                            } else {
                                //最上面的itemView滑出屏幕,顶部的复位
                                stickyText.setTranslationY(0);
                            }
                        } else if (transViewStatus == MyAdapter.NONE_STICKY_VIEW) {
                            //如果是没有分组,即无吸顶的item,则设置顶部的View移动为0,保持原位置
                            stickyText.setTranslationY(0);
                        }
                    }
                }
            });

源码地址:https://github.com/yoonerloop/StickyViewLayout

 

 

如何应对Android面试官->我用RecyclerView实现了吸顶效果 RecyclerView 计划用两个章节来讲解,今天主要是以 itemDecoration 和 实现吸顶效果为主; 阅读详情

相关推荐

实现Android悬浮吸顶效果的项目实战

本文还有配套的精品资源,点击获取 简介:在Android平台上,悬浮吸顶效果常用于音乐播放器、新闻阅读等应用,使关键信息如歌名、歌手固定在屏幕顶端,以提供更好的用户体验。本项目使用Java或Kotlin等语言开发,基于Android SDK和Android Studio工具。通过自定义HeaderLayout组件和关键知识点如ScrollView、CoordinatorLa...

weixin_29301059的博客 1639

Android---RecyclerView实现吸顶效果

需要注意的时,当我们的第二个组名到顶部的时候,要把当前顶部的组名给替换掉。当我们调用 addItemDecoration() 方法添加 decoration 的时候,RecyclerView 就会调用该类的 onDraw 方法去绘制分割线,也就是说:分割线是绘制出来的。ItemDecoration 允许应用给具体的 View 添加具体的图画或者 layout 的偏移,对于绘制 View之间的分割线,视觉分组边界等等是非常有用的。通过这种方法绘制的任何内容都将在项目视图被绘制。,因此将出现在视图的下方。

qq_44950283的博客 4077

StickyRecycleView:RecycleView的ItemDecoration实现分割线、分组、粘性布局

StickyRecycleView RecycleView的ItemDecoration实现分割线、分组、粘性布局 ItemDecoration类主要包含三个方法: public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) public void onDraw(Canvas c, RecyclerView parent, State state) public void onDrawOver(Canvas c, RecyclerView parent, State state) 方法一:可以实现类似padding的效果。 方法二:可以实现类似绘制背景的效果,内容在底部。 方法三:可以绘制在内容的上面,覆盖内容。 下面的分割线、分组、粘性布局就基于此实现:

h5-吸顶效果的实现方法

前言 我们在开发过程中,经常遇到这种需求,搜索框或者菜单,初始位置不在顶部,当我们往上滑动页面的时候,它们会固定到顶部,往下滑动,又回到初始位置。那么这个功能,如果实现呢,下面将进行详细讲解. 一、通过监听scroll事件,实现吸顶功能 这是大家经常用的一种方法 吸顶效果的基本的开发思路,利用scroll事件进行监听scrollTop的值,当scrollTop达到一定的值得时候...

小小喵的博客 1万+

RecyclerVIew实现悬浮吸顶效果

RecyclerVIew实现悬浮吸顶效果图 这里写图片描述 主页面布局 <?xml version=1.0 encoding=utf-8?> <FrameLayout xmlns:android=http://schemas.android.com/apk/res/android android:layout_width=match_parent android:layout_height=match_parent> <android.support.v7.widget.RecyclerView android:id=@+id/recycle

Zynq7020实战:ARM Cortex-A9降频避坑指南(附温度对比测试)

本文详细介绍了如何在Zynq7020平台上对ARM Cortex-A9处理器进行降频优化,以降低功耗并提升系统稳定性。通过分析时钟架构、提供实战操作步骤和温度对比测试数据,帮助开发者有效避免降频过程中的常见问题,实现嵌入式系统的高效能耗管理。

root9的博客 205

前端 实现吸顶的三种方式

何为吸顶?吸顶就是随着页面滚动,某个元素在移动到顶部后便会固定下来,并且不会再因为页面继续滚动而消失。 常见应用于页面的Tab栏。以下是自己在学习过程中简单整理的三种吸顶方式( 仅描述思路 )。 一、position: sticky 设置粘性定位并且添加某个方位才可生效,但是兼容性较差。 二、动态修改元素的position 监听页面的滚动,比较 元素初始状态距离顶部的高度offsetTop 与 页面此时的滚动高度。当后者大于前者时,修改元素的position方式为fixed。 三、障眼..

Bigfishseasugar 9289

EEG/ERP新手必看:5本神经科学入门书籍推荐(附高清PDF下载)

本文为EEG/ERP研究新手推荐5本神经科学入门书籍,涵盖认知神经科学、数据分析、ERP技术等核心内容。特别推荐《认知神经科学—关于心智的生物学》和《事件相关电位基础》,这些书籍不仅提供理论框架,还包含实用案例和MATLAB代码,帮助研究者快速掌握脑电研究技术。附高清PDF下载,适合实验室小组学习。

weixin_29210727的博客 443

吸顶效果的两种实现方式

第二种:使用sticky定位。第一种:使用fixed定位。

qq_49698477的博客 1397

STM32驱动数码管:从硬件连接到动态显示实现

本文详细介绍了使用STM32单片机驱动数码管的完整流程,从硬件连接到软件实现。内容涵盖共阳/共阴数码管原理、GPIO配置、段码表生成,并重点解析了多位数码管动态显示的核心技术,包括动态扫描原理、消影处理及实战代码,帮助开发者快速掌握这一嵌入式开发基础技能。

p5l2m9n4o6q的博客 574

【100%通过率】华为机试真题 Python 实现【对称美学】【2022.11 Q4 新题】

对称就是最大的美学,现有一道关于对称字符串的美学。 已知: 第1个字符串:R 第2个字符串:BR 第3个字符串:RBBR 第4个字符串:BRRBRBBR 第5个字符串:RBBRBRRBBRRBRBBR相信你已经发现规律了,没错! 就是第i个字符串=第i-1号字符串的取反+第i-1号字符串。取反即(R->B,B->R); 现在告诉你n和k,让你求得第n个字符串的第k个字符是多少。(k的编号从0开始)

MISAYAONE的博客 1万+

css js 两种方式实现导航吸顶效果

导航吸顶效果是前端开发中常用的需求,通常方法时监听页面滚动,当滚动距离大于导航距离父元素的距离时就设置导航固定定位。此时需要注意的是,当给导航设置固定定位后会脱离标准流,下面的内容就会顶上去原来的位置,因此需要有一个元素占位,这样滚动距离不大时不会导致内容被遮盖的现象。另外还有一种纯CSS的实现方式,则很少为人知晓。且听我慢慢道来。 方式一:使用JS监听滚动的方式实现 结构 &lt...

高先生的猫 4136

YOLOv8 改进:添加 LSK 注意力机制

通过添加 LSK 注意力机制,YOLOv8 能够更有效地捕捉特征图上的重要信息,提高检测性能,尤其是在复杂场景下展现出色的表现。这种方法不仅适用于资源受限的设备,还能在丰富多样的实际应用中提供强劲支持。

走向CTO的路上... 1220

实现吸顶效果,一个页面多个元素吸顶效果

新业务开发用到了吸顶效果而且是一个页面滚动到不同的位置不同的元素进行吸顶叠加。我是基于uniapp去写的,原理思路都一样吸顶效果很常见,这是我自己的写法,是通过uniapp自带的监听滚动事件,如果是vue使用window.addEventListener(“scroll”, this.add);或者js可以通过document.body.scrollTop,一通百通。

m0_45884629的博客 725

2026华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解

华为OD机试 新系统真题题库目录|机考题库 + 算法考点详解华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,

KJ.JK 4679

海康DS-7604N-K1/RTB固件包

【摘要】海康DS-7604N-K1/RTB萤石云设备发布V4.30.091版本升级程序(2022.09.19),仅适用于指定型号。升级前需先升级至V3.4.106基础版本,刷机会重置设备为未激活状态,需重新设置admin密码。该机型支持密码/手势登录,无密码时可通过U盘升级。注意事项:升级存在风险,需确认程序适用性;升级过程严禁断电;必须阅读压缩包内的刷机说明。此为定制机型,非必要不建议升级。(150字)

海康威视技术支持 1567

bootstrap 实现吸顶效果_手把手教你如何实现前端的吸顶效果

前端实现吸顶效果1、监听scroll事件,实现吸顶功能2、css实现吸顶写页面经常会遇到这种需求:导航菜单初始位置不在头部,滑动页面时候当导航菜单滑到头部位置就固定在头部,往下滑导航菜单又回到初始位置。网页被卷起来的高度/宽度(即浏览器滚动条滚动后隐藏的页面内容高度)(javascript) document.documentElement.scrollTop //firefox(j...

weixin_39620278的博客 151

STM32智能小车控制舵机转向

文章目录前言一、舵机简单介绍及接线方式二、cubeMX配置三、代码解析总结 前言 本文将带大家学习如何驱动舵机转向 一、舵机简单介绍及接线方式 信号线(黄线)红线(电源线)棕色(地线) 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2

m0_49476241的博客 8611

2020-08-05

吸顶效果 一、通过监听scroll事件,实现吸顶功能 吸顶效果的基本的开发思路,利用scroll事件进行监听scrollTop的值,当scrollTop达到一定的值得时候设置吸顶元素的position : fixed;属性 写入事件监听,监听滚动条。 js mounted () { window.addEventListener('scroll', this.handleScroll); }, destroyed(){ window.removeEventListener('scroll',

weixin_43966128的博客 135

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

在Vue中实现吸顶的功能

需求:下拉滚动条时标题栏会在顶部显示 两种方法: 1,监听盒子到游览器顶部的距离, 如果距离为0 就定位 2 利用c3的属性 position: sticky; 下面上代码 mounted() { // handleScroll为页面滚动的监听回调 window.addEventListener('scroll', this.handleScroll) this.$nextTick(function() { // 这里fixe

今天,你学习了吗? 970

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

vue中监听页面滚动,给吸顶头部加不同的样式

背景:当页面过长的时候,会出现下拉滚动的情况,头部也被滚动过去了,这时候头部需要吸顶,有的页面头部一开始是一个颜色,滑动的时候是另外一个颜色,这时候要怎么做呢? 1.首先写头部吸顶的样式html部分为: <div class="declaration-data" @scroll="handleScroll($event)"> <div class="declaration-header" :class="nav? 'nav-bg':'nav_nobg'" ref="decl-he

weixin_49203377的博客 1109

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

滚动页面,实现导航栏固定在顶部(吸顶效果)

内容说明 页面中有导航栏,当页面滚动超出一定范围时,它会固定在设置好的位置,一般是固定在顶部。 本文有两种方式实现,一种是sticky,兼容不好;另外一种是sticky的解体。。兼容效果万能 1、首先最简单的,是利用position的sticky属性 sticky 页面不动的情况下,它就像 position:relative; 而当页面滚动超出目标区域时,它表现的就像 position:fixe...

repoman的博客 3万+

鸿蒙6.0应用开发——仿头条首页列表滑动吸顶效果

Tabs嵌套List的吸顶效果,常用于新闻、资讯类应用的首页。 本场景以Tabs页签首页内容为例,在首页TabContent的内容区域使用List组件配合其它组件,构建下方列表数据内容。进入页面后,向上滑动内容,中间Tabs页签区域实现吸顶展示的效果。

高心星的专栏 5008

Vue实现导航栏吸顶效果

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Vue实现导航栏吸顶效果</title> </head> <body> <script src="static/js/vue.js"></script> <style> body

彭世瑜的博客 6592

iOS 吸顶效果

项目中,在列表向上滚动时,有时需要将某个控件置顶,这就是我们常见的吸顶效果。

假装你是大灰狼的专栏 5829

Flutter 实现上滑悬浮吸顶效果

在 Flutter 开发中,实现一个具有上滑悬浮吸顶效果的界面是一个常见的需求。这种效果通常用于商品列表、新闻资讯等场景,能够提升用户体验。本文将通过一个具体的案例,介绍如何使用 RefreshIndicator、NestedScrollView、TabBar、TabView 和 SmartRefresher 来实现一个支...

cnzzs的博客 1658
上一篇: Recycleview的联动效果
下一篇: 设计模式之原型模式
一杯清泉
博客等级 码龄11年 314粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值