package com.doumee.lib_coremodel.binding.viewadapter.scrollview; 
 | 
  
 | 
  
 | 
import android.view.ViewTreeObserver; 
 | 
import android.widget.ScrollView; 
 | 
  
 | 
import androidx.core.widget.NestedScrollView; 
 | 
import androidx.databinding.BindingAdapter; 
 | 
  
 | 
import com.doumee.lib_coremodel.binding.command.BindingCommand; 
 | 
  
 | 
  
 | 
/** 
 | 
 * Created by goldze on 2017/6/18. 
 | 
 */ 
 | 
public final class ViewAdapter { 
 | 
  
 | 
    @SuppressWarnings("unchecked") 
 | 
    @BindingAdapter({"onScrollChangeCommand"}) 
 | 
    public static void onScrollChangeCommand(final NestedScrollView nestedScrollView, final BindingCommand<NestScrollDataWrapper> onScrollChangeCommand) { 
 | 
        nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { 
 | 
            @Override 
 | 
            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
 | 
                if (onScrollChangeCommand != null) { 
 | 
                    onScrollChangeCommand.execute(new NestScrollDataWrapper(scrollX, scrollY, oldScrollX, oldScrollY)); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    @SuppressWarnings("unchecked") 
 | 
    @BindingAdapter({"onScrollChangeCommand"}) 
 | 
    public static void onScrollChangeCommand(final ScrollView scrollView, final BindingCommand<ScrollDataWrapper> onScrollChangeCommand) { 
 | 
        scrollView.getViewTreeObserver().addOnScrollChangedListener(new ViewTreeObserver.OnScrollChangedListener() { 
 | 
            @Override 
 | 
            public void onScrollChanged() { 
 | 
                if (onScrollChangeCommand != null) { 
 | 
                    onScrollChangeCommand.execute(new ScrollDataWrapper(scrollView.getScrollX(), scrollView.getScrollY())); 
 | 
                } 
 | 
            } 
 | 
        }); 
 | 
    } 
 | 
  
 | 
    public static class ScrollDataWrapper { 
 | 
        public float scrollX; 
 | 
        public float scrollY; 
 | 
  
 | 
        public ScrollDataWrapper(float scrollX, float scrollY) { 
 | 
            this.scrollX = scrollX; 
 | 
            this.scrollY = scrollY; 
 | 
        } 
 | 
    } 
 | 
  
 | 
    public static class NestScrollDataWrapper { 
 | 
        public int scrollX; 
 | 
        public int scrollY; 
 | 
        public int oldScrollX; 
 | 
        public int oldScrollY; 
 | 
  
 | 
        public NestScrollDataWrapper(int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
 | 
            this.scrollX = scrollX; 
 | 
            this.scrollY = scrollY; 
 | 
            this.oldScrollX = oldScrollX; 
 | 
            this.oldScrollY = oldScrollY; 
 | 
        } 
 | 
    } 
 | 
} 
 |