源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android中实现监听ScrollView滑动事件

  • 时间:2020-02-26 05:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中实现监听ScrollView滑动事件
时候我们需要监听ScroView的滑动情况,比如滑动了多少距离,是否滑到布局的顶部或者底部。可惜的是SDK并没有相应的方法,不过倒是提供了一个
[u]复制代码[/u] 代码如下:
protected void onScrollChanged(int x, int y, int oldx, int oldy) 
方法,显然这个方法是不能被外界调用的,因此就需要把它暴露出去,方便使用。解决方式就是写一个接口,
[u]复制代码[/u] 代码如下:
package com.example.demo1;    public interface ScrollViewListener {        void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy);    } 
 然后重写ScrollView类,给它提供上面写的回调接口。
[u]复制代码[/u] 代码如下:
package com.example.demo1;    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 setScrollViewListener(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);          }      }    } 
注意在xml布局的时候,不要写错了包。
[u]复制代码[/u] 代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      xmlns:tools="http://schemas.android.com/tools"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="horizontal"      android:paddingBottom="@dimen/activity_vertical_margin"      android:paddingLeft="@dimen/activity_horizontal_margin"      android:paddingRight="@dimen/activity_horizontal_margin"      android:paddingTop="@dimen/activity_vertical_margin"      tools:context=".MainActivity" >        <com.example.demo1.ObservableScrollView          android:id="@+id/view1"          android:layout_width="wrap_content"          android:layout_height="match_parent" >            <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:orientation="vertical" >                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试1" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试2" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试3" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试4" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试5" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试6" />          </LinearLayout>      </com.example.demo1.ObservableScrollView>        <com.example.demo1.ObservableScrollView          android:id="@+id/view2"          android:layout_width="wrap_content"          android:layout_height="match_parent" >            <LinearLayout              android:layout_width="wrap_content"              android:layout_height="match_parent"              android:orientation="vertical" >                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试1" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试2" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试3" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试4" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试5" />                <TextView                  android:layout_width="100dp"                  android:layout_height="100dp"                  android:text="试试6" />          </LinearLayout>      </com.example.demo1.ObservableScrollView>    </LinearLayout>   
  最后activity代码如下,
[u]复制代码[/u] 代码如下:
package com.example.demo1;    import android.os.Bundle;  import android.app.Activity;  import android.view.Menu;    public class MainActivity extends Activity implements ScrollViewListener {        private ObservableScrollView scrollView1 = null;      private ObservableScrollView scrollView2 = null;        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);            scrollView1 = (ObservableScrollView) findViewById(R.id.view1);          scrollView1.setScrollViewListener(this);          scrollView2 = (ObservableScrollView) findViewById(R.id.view2);          scrollView2.setScrollViewListener(this);        }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;      }        @Override      public void onScrollChanged(ObservableScrollView scrollView, int x, int y,              int oldx, int oldy) {          if (scrollView == scrollView1) {              scrollView2.scrollTo(x, y);          } else if (scrollView == scrollView2) {              scrollView1.scrollTo(x, y);          }      }    } 
[img]http://files.jb51.net/file_images/article/201505/20155684740956.png?20154685011[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部