Android实现两个ScrollView互相联动的同步滚动效果代码

本文实例讲述了Android实现两个ScrollView互相联动的同步滚动效果代码。分享给大家供大家参考,具体如下:

最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意思就是滑动其中的一个ScrollView另一个ScrollView也一同跟着滑动,要做到一起同步滑动。感觉在以后的项目开发中大家可能也会用到,绝对做个Demo分享出来,供大家一起学习,以便大家以后好用,觉的不错,有用的可以先收藏起来哦!

其实对于ScrollView,Android官方并没有提供相关的获得或者设置滑动距离的方法,也没有提供相应的监听方法。但是那要怎么来做呢?不用担心,肯定能做到。既然没有提供监听方法,但是通过查看Android源码可知,提供了一个有关x,y距离的方法,如下:
复制代码 代码如下:protected void onScrollChanged(int x, int y, int oldx, int oldy)
但是呢,该方法是受保护的方法,不能够直接调用,所以我们得重写ScrollView,写个接口进行监听回调。

效果图:

具体实现方法如下:

1. 重写ScrollView

package net.loonggg.scrollviewdemo; import android.content.Context; import android.util.AttributeSet; import android.widget.ScrollView; public class ObservableScrollView extends ScrollView { private ScrollViewListener scrollViewListener = null; public ObservableScrollView(Context context) { super(context); } public ObservableScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public ObservableScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public void setOnScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; } @Override protected void onScrollChanged(int x, int y, int oldx, int oldy) { super.onScrollChanged(x, y, oldx, oldy); if (scrollViewListener != null) { scrollViewListener.onScrollChanged(this, x, y, oldx, oldy); } } }

通过上边代码,我们可以看到上面自己写了一个设置监听的方法,如下:

public void setOnScrollViewListener(ScrollViewListener scrollViewListener) { this.scrollViewListener = scrollViewListener; }

那么就看第二步吧,定义一个监听接口。

2. 定义监听接口

package net.loonggg.scrollviewdemo; public interface ScrollViewListener { void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); }

3. 布局文件引用重写的ObservableScrollView

具体内容不写了,举个引用例子即可,如下:

<net.loonggg.scrollviewdemo.ObservableScrollView android:id="@+id/sv1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1.0" android:background="#36b797" > //里面放包裹内容 </net.loonggg.scrollviewdemo.ObservableScrollView>

4. Activity中调用

package net.loonggg.scrollviewdemo; import android.os.Bundle; import android.view.Window; import android.app.Activity; public class MainActivity extends Activity implements ScrollViewListener { private ObservableScrollView sv1, sv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); sv1 = (ObservableScrollView) findViewById(R.id.sv1); sv2 = (ObservableScrollView) findViewById(R.id.sv2); sv1.setOnScrollViewListener(this); sv2.setOnScrollViewListener(this); } @Override public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) { if (scrollView == sv1) { sv2.scrollTo(x, y); } else if (scrollView == sv2) { sv1.scrollTo(x, y); } } }

到这里就讲完了,应该说的比较明白了吧。

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-07-31 02:45:26

Android实现两个ScrollView互相联动的同步滚动效果代码的相关文章

Android实现两个ScrollView互相联动的同步滚动效果代码_Android

本文实例讲述了Android实现两个ScrollView互相联动的同步滚动效果代码.分享给大家供大家参考,具体如下: 最近在做一个项目,用到了两个ScrollView互相联动的效果,简单来说联动效果意思就是滑动其中的一个ScrollView另一个ScrollView也一同跟着滑动,要做到一起同步滑动.感觉在以后的项目开发中大家可能也会用到,绝对做个Demo分享出来,供大家一起学习,以便大家以后好用,觉的不错,有用的可以先收藏起来哦! 其实对于ScrollView,Android官方并没有提供相关

Android 中文 API (100) —— ScrollView

前言 春节即至,谨代表Android中文翻译组全体同仁祝大家身体健康,工作顺利!从第一篇译稿2010年8月27发布至今天2011年1月27整5个月,共发布100篇译文,3个合集,在新的一年里,翻译组仍将坚持Android相关的翻译工作,秉承开源.合作.共享和坚持的信念打持久战,感谢大家的关心和支持! 本章内容是android.widget.ScrollView,版本为Android 2.3 r1,翻译来自"pengyouhong",再次感谢"pengyouhong"

android中textview和scrollview使用

问题描述 android中textview和scrollview使用 两个控件在一起使用Textview设置maxLines=20跑起来不能上下滑动??? 解决方案 不会的,你怎么设置的 解决方案二: 正常使用Scroll嵌套TextView不会出现这种问题吧.请详细给出问题代码,不然请直接看官方API的说明

一步一步SharePoint 2007之二十七:编写两个WebPart的联动

摘要 前面的文章中,我们编写了一个复合控件的WebPart,实现了这个后,大家就可以编写非常复杂的 WebPart了. 在实际应用中,我们常常需要将某些记录的列表显示出来,单击某条记录后,在其它WebPart中显示记 录的详细信息,那么,这样的WebPart能不能做到呢? 本篇文章将介绍如何编写两个WebPart的联动的过程. 正文 要能实现左边列表,右边详细信息的记录显示方式,我们需要解决两个方面的问题. 一个是如何实现列表,以及点击某一项后的事件触发:另一个是如何在一个WebPart中访问另

android 属性动画在ScrollView中平移view的问题

问题描述 android 属性动画在ScrollView中平移view的问题 在ScrollView里使用属性动画平移一个view 的时候,沿ScrollView滑动反向,不管是的动态改变translationX,还是x,view的宽度也会改变,就相当于只改变view的一个边界,另一个边界还是固定不动,看上去完全不是平移而是压缩或拉伸的效果,平移该如何实现? 解决方案 android view动画问题Android View 动画问题Android view动画问题 解决方案二: 我不知道你在说

不显示里面view的内容-android 我在使用ScrollView 中 加入画板view 无法显示??

问题描述 android 我在使用ScrollView 中 加入画板view 无法显示?? android:layout_width="wrap_content" android:layout_height="wrap_content" > android:background="#FFFFFF" android:layout_width="match_parent" android:layout_height=&quo

android合并两个app,构建过了编译不通过,报错如下

问题描述 android合并两个app,构建过了编译不通过,报错如下 公司要求合并两个app,基本上构建过了,就是编译的时候报出这个错误.纠结了好久,又大神指导什么原因吗? 解决方案 我已经解决了谢谢啊.参考文献http://blog.csdn.net/t12x3456/article/details/40837287 解决方案二: 你是怎么合并的?能把代码架构截个图么?

Android带你解析ScrollView–仿QQ空间标题栏渐变

绪论 今天来研究的是ScrollView-滚动视图,滚动视图又分横向滚动视图(HorizontalScrollView)和纵向滚动视图(ScrollView),今天主要研究纵向的.相信大家在开发中经常用到,ScrollView的功能已经很强大了,但是仍然满足不了我们脑洞大开的UI设计师们,所以我们要自定义-本篇文章主要讲监听ScrollView的滑动实现仿QQ空间标题栏渐变,先看一下效果图: 好了我们切入主题. 有可能你不知道的那些ScrollView属性 android:scrollbars

android用户界面之ScrollView教程实例汇总

--------------------------汇总不容易啊------------------------------- 一.ScrollView基础知识 1.Android中ScrollView - 滚动条控件 http://www.apkbus.com/android-51426-1-1.html 2.设置ScrollView滚动条的颜色 http://www.apkbus.com/android-823-1-1.html 3.ScrollView当显示超出当前页面时自动移动到最底端