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;
|
}
|
}
|
}
|