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