package com.doumee.lib_coremodel.binding.viewadapter.viewpager;
|
|
|
import androidx.databinding.BindingAdapter;
|
import androidx.viewpager.widget.ViewPager;
|
|
import com.doumee.lib_coremodel.binding.command.BindingCommand;
|
|
/**
|
* Created by goldze on 2017/6/18.
|
*/
|
public class ViewAdapter {
|
@BindingAdapter(value = {"onPageScrolledCommand", "onPageSelectedCommand", "onPageScrollStateChangedCommand"}, requireAll = false)
|
public static void onScrollChangeCommand(final ViewPager viewPager,
|
final BindingCommand<ViewPagerDataWrapper> onPageScrolledCommand,
|
final BindingCommand<Integer> onPageSelectedCommand,
|
final BindingCommand<Integer> onPageScrollStateChangedCommand) {
|
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
private int state;
|
|
@Override
|
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
if (onPageScrolledCommand != null) {
|
onPageScrolledCommand.execute(new ViewPagerDataWrapper(position, positionOffset, positionOffsetPixels, state));
|
}
|
}
|
|
@Override
|
public void onPageSelected(int position) {
|
if (onPageSelectedCommand != null) {
|
onPageSelectedCommand.execute(position);
|
}
|
}
|
|
@Override
|
public void onPageScrollStateChanged(int state) {
|
this.state = state;
|
if (onPageScrollStateChangedCommand != null) {
|
onPageScrollStateChangedCommand.execute(state);
|
}
|
}
|
});
|
|
}
|
|
public static class ViewPagerDataWrapper {
|
public float positionOffset;
|
public float position;
|
public int positionOffsetPixels;
|
public int state;
|
|
public ViewPagerDataWrapper(float position, float positionOffset, int positionOffsetPixels, int state) {
|
this.positionOffset = positionOffset;
|
this.position = position;
|
this.positionOffsetPixels = positionOffsetPixels;
|
this.state = state;
|
}
|
}
|
}
|