sinat_bond 2018-01-22 08:26 采纳率: 25%
浏览 705
已结题

一个关于安卓中发送消息的问

 public class MyScrollView extends ScrollView {

    private Runnable scrollerTask;
    private int initialPosition;

    private int newCheck = 100;
    private static final String TAG = "MyScrollView";

    public interface OnScrollStoppedListener{
        void onScrollStopped();
    }

    private OnScrollStoppedListener onScrollStoppedListener;

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);

        scrollerTask = new Runnable() {
            public void run() {
                int newPosition = getScrollY();
                if(initialPosition - newPosition == 0){//has stopped
                    if(onScrollStoppedListener!=null){
                        onScrollStoppedListener.onScrollStopped();
                    }
                }else{
                    initialPosition = getScrollY();
                    MyScrollView.this.postDelayed(scrollerTask, newCheck);
                }
            }
        };
    }

    public void setOnScrollStoppedListener(MyScrollView.OnScrollStoppedListener listener){
        onScrollStoppedListener = listener;
    }

    public void startScrollerTask(){

        initialPosition = getScrollY();
        MyScrollView.this.postDelayed(scrollerTask, newCheck);
    }

}

就是在自定义的scrollview的构造方法里面,当它走else方法的时候为什么能够自己发送自己??因为平时自己的写法都是先写postdelay然后里面再写里面的runnable方法,对于他这种写法,不能理解,也不能明白为什么能够自己发送自己?求前辈们指点

  • 写回答

3条回答 默认 最新

  • 麦、积 2018-01-22 09:19
    关注

    private OnScrollStoppedListener onScrollStoppedListener;

    public MyScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    
        scrollerTask = new Runnable() {
            public void run() {
                int newPosition = getScrollY();
                if(initialPosition - newPosition == 0){//has stopped
                    if(onScrollStoppedListener!=null){
                        onScrollStoppedListener.onScrollStopped();
                    }
                }else{
                    initialPosition = getScrollY();
                    MyScrollView.this.postDelayed(scrollerTask, newCheck);
                }
            }
        };
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决