android-Horizo​​ntalScrollView-逃跑后计算停止位置

android-Horizo​​ntalScrollView-逃跑后计算停止位置,第1张

概述使用Horizo​​ntalScrollView,如何在用户移动视图后检测滚动何时停止?或者,如何知道滚动停止时它将在什么位置(然后可以将其与onScrollChanged一起使用).我继承了Horizo​​ntalScrollView.我想要的是让视图在用户与其交互时自然地表现出来,但是当它停止更新其某些子视图时-如果我

使用Horizo​​ntalScrollVIEw,如何在用户移动视图后检测滚动何时停止?或者,如何知道滚动停止时它将在什么位置(然后可以将其与onScrollChanged一起使用).

我继承了Horizo​​ntalScrollVIEw.我想要的是让视图在用户与其交互时自然地表现出来,但是当它停止更新其某些子视图时-如果我在视图滚动时这样做,则在滚动过程中会导致小的滞后.

谢谢

解决方法:

我为Horizo​​ntalScrollVIEw编写了一个自定义类,该类具有一个带有滚动停止方法的接口,该方法在滚动停止时给出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-Horizo​​ntalScrollView-逃跑后计算停止位置全部内容,希望文章能够帮你解决android-Horizo​​ntalScrollView-逃跑后计算停止位置所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1092840.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存