1

我正在使用 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都会调用,这里我面临的问题是position左右positionOffset滑动是一样的。

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

4

2 回答 2

1

引入一个实例变量(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
                    }
                });

于 2021-08-17T10:47:06.123 回答
0

onPageSliding用户滑动页面时会调用,与PageSliderIndicator.

positionpositionOffset中的值pageslider是相同的。这个回调参数目前就是这样设计的。

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

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

于 2021-07-28T07:12:48.367 回答