文章目录

  • 效果图
  • 实现思路
  • 代码布局、逻辑
    • 布局文件
    • 自定义ViewNorthernScrollViewListener.java
    • MainActivity.java

效果图

如果你要的不是以下的效果,请停止浏览文章,不要浪费时间!

从上打下动漫依次是:《东京喰种》《魁拔》《海贼王》《名侦探柯南》《学院默示录》《你的名字》《神兵小将》《铁臂阿童木》《猫和老鼠》《虹猫蓝兔七侠传》《太空历险记》《洛洛历险记》《超兽武装》《风云决》这些都是我非常喜欢的动漫

实现思路

重写ScrollView中的onScrollChanged方法,通过接口回调计算滑动距离,控制控件的显示隐藏达到这种效果,在布局中,注意魁拔那张图片(第二张),其实在布局中存在两个完全一样的这张图片,这时候ScrollView滑动便会通过接口,计算出滑动距离,当滑动距离大于这张图高度时候,便会出现,反之隐藏!

代码布局、逻辑


布局文件

给出简单的布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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=".MainActivity"><com.northernbrain.myapplication.NorthernScrollViewandroid:id="@+id/northernScrollView"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:id="@+id/view1"android:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo11"/><ImageViewandroid:id="@+id/view2"android:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo10"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo12"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo13"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo14"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo15"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo16"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo17"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo18"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo19"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo20"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo21"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo22"/><ImageViewandroid:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo23"/></LinearLayout></com.northernbrain.myapplication.NorthernScrollView><ImageViewandroid:id="@+id/title"android:layout_width="match_parent"android:layout_height="180dp"android:scaleType="centerCrop"android:src="@mipmap/photo10"android:visibility="gone"app:layout_constraintTop_toTopOf="parent"tools:layout_editor_absoluteX="0dp" /></android.support.constraint.ConstraintLayout>

自定义ViewNorthernScrollViewListener.java

继承自ScrollView重写onScrollChanged方法

package com.northernbrain.myapplication;import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;public class NorthernScrollView extends ScrollView {private NorthernScrollViewListener scrollViewListener = null;public void setScrollViewListener(NorthernScrollViewListener scrollViewListener) {this.scrollViewListener = scrollViewListener;}public NorthernScrollView(Context context) {super(context);}public NorthernScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public NorthernScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, l, t, oldl, oldt);}}public interface NorthernScrollViewListener {void onScrollChanged(NorthernScrollView scrollView, int x, int y, int oldx, int oldy);}
}

MainActivity.java

在此要实现NorthernScrollView.NorthernScrollViewListener这个接口

package com.northernbrain.myapplication;import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.ImageView;public class MainActivity extends AppCompatActivity implements NorthernScrollView.NorthernScrollViewListener {private NorthernScrollView northernScrollView;private ImageView title;private ImageView view1;int height;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//实力化控件initView();//计算控件高度getHetght();}private void getHetght() {ViewTreeObserver vto = view1.getViewTreeObserver();vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {height = view1.getHeight();northernScrollView.setScrollViewListener(MainActivity.this);}});}private void initView() {northernScrollView = (NorthernScrollView) findViewById(R.id.northernScrollView);title = (ImageView) findViewById(R.id.title);view1 = (ImageView) findViewById(R.id.view1);}@Overridepublic void onScrollChanged(NorthernScrollView scrollView, int x, int y, int oldx, int oldy) {if (y <= height) {title.setVisibility(View.GONE);} else {title.setVisibility(View.VISIBLE);}}
}

安卓ScrollView向上滑动控件顶部悬浮效果实现相关推荐

  1. 上滑ScrollView,实现控件顶部悬浮

    上滑ScrollView,实现控件顶部悬浮 因为看到网上的比较复杂,所以自己写了这篇,希望能够足够简单. 先看效果图,是不是你需要的: 不论怎么滑动屏幕内容,当蓝色部分到达顶部时,便会一直会显示在顶部 ...

  2. Android果冻效果滑动控件

    类似于iOS有阻尼效果的滑动控件,一般我们比较亲切地称之为果冻控件 比较常见的地方,如微信里[我]的那个面板模块,即使没有再多的选项,也不会很生硬的不允许用户滑动. 微信是的处理方法是让用户滑动,但最 ...

  3. ScrollView 滚动视图控件

    为什么要用ScrollView 滚动视图控件 应为手机屏幕过小显示的内容过多没法显示完全所以要使用滚动视图控件 使用时的注意点 不用再ScrollView内部使用自带滚动条的控件或布局 ScrollV ...

  4. 基于webview的选择滑动控件(PC和wap版)

    有了webview,大家开发ios或者安卓的app就方便很多啦. 第一可以增量更新: 第二webview可以同时兼容ios和安卓,减少开发量哦. --------------------------- ...

  5. Plotly绘制金融时间序列图实战:配置滑动控件

    Plotly绘制金融时间序列图实战:配置滑动控件 # 可视化金融时间序列数据并设置时间粒度组件: import plotly as py import plotly.graph_objs as go ...

  6. android 光晕动画,Android去掉SrollView、GrdiView、RecycleView、ViewPager等可滑动控件滑动到边缘的光晕效果...

    下面以RecycleView为例,其他可滑动控件也是一样的 在XML中设置: android:id="@+id/rv_recycle_view" android:layout_wi ...

  7. ScrollView垂直滚动控件

    ScrollView垂直滚动控件 一.简介 二.方法 1)ScrollView垂直滚动控件使用方法 1.在layout布局文件的最外层建立一个ScrollView控件 2.在ScrollView控件中 ...

  8. Android无限滑动控件实现

    无限滑动控件 无限滑动控件的预期效果是添加有限个View实现无限滑动的效果. 我的实现是通过重写dispatchDraw,对canvas画布进行偏移达到无限滑动的效果. 效果如图: github地址: ...

  9. Android左右滑动控件实现开关的切换效果

    /**  * 开关控件,通过左右滑动控件实现开关的切换效果 <br>  * 使用时需要设置开关状态监听{@link OnSwitchStateChangeListener} <br& ...

最新文章

  1. RSA签名的PSS模式
  2. 五大常用算法之三:贪心算法
  3. EventBus设计与实现分析——事件的发布
  4. java填空题_Java语言基础知识填空题
  5. 李宏毅机器学习课程7~~~反向传播
  6. 将Maven项目发布到Nexus私服
  7. 机器学习时显卡频率莫明其妙的降低了?
  8. Gallery 相册管理系统项目将不再维护
  9. 【Flink】数据传输 挖个坑 把自己埋了 ClassCastException String cannot be cast to [LJava.lang.String
  10. miui11是android几,miui11是安卓几
  11. 如何在IPv6下观看网络电视直播
  12. invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix
  13. 使用ingress暴露kubernetes集群内部的pod服务
  14. 云计算学习4——Nova组件服务
  15. 电脑计算机不显示桌面了怎么办,电脑不显示桌面黑屏了 电脑黑屏不显示桌面怎么办 - 云骑士一键重装系统...
  16. 正则表达式在线生成器(txt2re)
  17. Sine之舞 真的会跳舞哇,c语言实现
  18. liunx配置主机名
  19. 小米电视能看普通的电视台吗?HDP直播和电视家带你解锁看剧新体验
  20. 一举解决Win10所有分辨率引起的软件/系统界面字体小/文字模糊/看不清问题

热门文章

  1. 苹果电脑关机关不了的解决办法
  2. 【Android】华为和小米手机后台进程防杀策略
  3. 明白了Java-WebService原理对你web开发真的太重要了
  4. 重温blame!——用html+js写个漫画浏览器
  5. 阿里园区竟然开了一家微笑就可以打折的店
  6. Linux下中文显示乱码 -- linux编码转换
  7. 微信小程序 textview自动换行
  8. 基于 V2I/V2N 的感知融合系统技术及应用研究
  9. flashcharge充电协议_拆解报告:iQOO 55W FlashCharge2.0超级闪充车充iCH2055
  10. s5pv210-nand-dm9000-dts-2