HarmonyOS 如何在用户开始滑动页面时找到PageSlider 的滑动方向?

How to find the swipe direction of PageSlider while the user starts swiping the page in HarmonyOS?

我正在使用 Java SDK 在 HarmonyOS 中编写一个自定义组件,它是一个自定义页面滑块指示器。为此,我添加了一个 PageChangedListener,它提供了三种覆盖方法。

public class CustomPageSliderIndicator extends Component implements PageSlider.PageChangedListener{

@Override
public void onPageSliding(int position, float positionOffset, int positionOffsetPixels) {}

@Override
public void onPageChosen(int i) {}

@Override
public void onPageSlideStateChanged(int i) { }
}

每当用户滑动页面时,都会调用onPageSliding,这里我遇到的问题是positionpositionOffset左右滑动是一样的。

那么,如何知道滑动的方向呢?

onPageSliding会在用户滑动页面时调用,与PageSliderIndicator没有太大关系。

positionpageslider中的positionOffset的值相同。这个回调参数目前是这样设计的。

void onPageSliding(int itemPos, float itemPosOffset, int itemPosOffsetPixels)

如果此参数设置为左右滑动,则第三个参数itemPosOffsetPixels表示方向。向右滑动为正,向左滑动为负。

引入一个实例变量(currentPosition)来跟踪当前页面。

    private int currentPosition;

...

    pageSlider.addPageChangedListener(new PageSlider.PageChangedListener() {
                    @Override
                    public void onPageSliding(int itemPos, float itemPosOffset, int itemPosOffsetPixels) {
                    }

                    @Override
                    public void onPageSlideStateChanged(int state) {
                    }

                    @Override
                    public void onPageChosen(int position) {
                         if(currentPosition < position) {
                            // handle swipe LEFT
                        } else if(currentPosition > position){
                            // handle swipe RIGHT
                        }
                        currentPosition = position; // Update current position
                    }
                });