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
,这里我遇到的问题是position
和positionOffset
左右滑动是一样的。
那么,如何知道滑动的方向呢?
onPageSliding
会在用户滑动页面时调用,与PageSliderIndicator
没有太大关系。
position
和pageslider
中的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
}
});
我正在使用 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
左右滑动是一样的。
那么,如何知道滑动的方向呢?
onPageSliding
会在用户滑动页面时调用,与PageSliderIndicator
没有太大关系。
position
和pageslider
中的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
}
});