使用HorizontalScrollVIEw,如何在用户移动视图后检测滚动何时停止?或者,如何知道滚动停止时它将在什么位置(然后可以将其与onScrollChanged一起使用).
我继承了HorizontalScrollVIEw.我想要的是让视图在用户与其交互时自然地表现出来,但是当它停止更新其某些子视图时-如果我在视图滚动时这样做,则在滚动过程中会导致小的滞后.
谢谢
解决方法:
我为HorizontalScrollVIEw编写了一个自定义类,该类具有一个带有滚动停止方法的接口,该方法在滚动停止时给出scrollX的位置.
这是代码:
public class CustomMCSDHorizontalScroll extends horizontalscrollview { private Runnable scrollerTask; private int initialposition; private int newCheck = 100; public interface onScrollStopedListner{ voID onScrollStoped(); } private onScrollStopedListner onScrollStoped; public CustomMCSDHorizontalScroll(Context context, AttributeSet attrs) { super(context, attrs); // Todo auto-generated constructor stub scrollerTask = new Runnable() { @OverrIDe public voID run() { // Todo auto-generated method stub int newposition = getScrollX(); if ( initialposition - newposition == 0 ) { if ( onScrollStoped != null ) { onScrollStoped.onScrollStoped(); } } else { initialposition = getScrollX(); CustomMCSDHorizontalScroll.this.postDelayed( scrollerTask, newCheck); } } }; } public voID setonScrollStopListner (CustomMCSDHorizontalScroll. onScrollStopedListner Listener) { onScrollStoped = Listener; } public voID startScrollerTask(){ initialposition = getScrollX(); CustomMCSDHorizontalScroll.this.postDelayed(scrollerTask, newCheck); }}
这是ontouch()方法:
@OverrIDepublic boolean ontouch(VIEw v, MotionEvent event) { switch (v.getID()) { case R.ID.mhorizontalscrollviewMain: if (event.getAction() == KeyEvent.ACTION_UP) { hsvUpperTab.startScrollerTask(); } break; case R.ID.mhorizontalscrollviewSub: if (event.getAction() == KeyEvent.ACTION_UP) { hsvLowerTab.startScrollerTask(); } default: break; } return false;}
这是onScrollStop()方法:
hsvLowerTab.setonScrollStopListner(new onScrollStopedListner() { @OverrIDe public voID onScrollStoped() { // Todo auto-generated method stub getLowerTabScrolled(hsvLowerTab.getScrollX()); }});hsvUpperTab.setonScrollStopListner(new onScrollStopedListner() { @OverrIDe public voID onScrollStoped() { // Todo auto-generated method stub getUpperTabScrolled(hsvUpperTab.getScrollX()); }});
总结 以上是内存溢出为你收集整理的android-HorizontalScrollView-逃跑后计算停止位置全部内容,希望文章能够帮你解决android-HorizontalScrollView-逃跑后计算停止位置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)