当前位置: 首页 > 知识库问答 >
问题:

当用户在HarmonyOS中开始滑动页面时,如何找到PageLider的滑动方向?

文志学
2023-03-14

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

java prettyprint-override">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对于左右滑动是相同的。

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

共有1个答案

华修永
2023-03-14

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

 类似资料:
  • 问题内容: 这两种方法以及的两种方法都不会告诉您滑动的方向。 该方法的的委托不帮助我们,所以尽管。它只是告诉页面是否被完全刷了。 那么我应该使用哪种方法来准确地检测用户方向(左或右)? 这两个属性可能会有所帮助: 我的代码如下所示: 根据pbasdf所说, 问题答案: 您应该同时使用和委托方法来确定转换是向前还是向后。在课程开始时声明几个索引变量,例如和(均为)。 在该方法中,将等于挂起的视图控制

  • 我试图使用touch action类使用swipe查找元素,但Appium服务器抛出一个错误,即命令有问题。我试图使用touch action类使用坐标从一个位置移动到另一个位置。我的代码如下所示: 服务器正在抛出此错误,如下所示: 服务器没有响应错误

  • HarmonyOS Swiper组件如何实现手指拖动滑动效果而不是自动滑动效果?

  • 我想在查看页面2中禁用从右向左滑动。我基本上有一个viewpager2元素,在导航抽屉中有两页。我希望我的第二页仅在单击第一页中的某个元素时显示(从第一页向右向左滑动不应打开第二页),而当我在第二页时,viewpager2滑动(从左向右滑动)应像在viewpager中一样滑动。 我尝试过扩展类并覆盖触摸事件,但不幸的是它是最终类,因此我无法扩展它。 其次,我尝试使用将userinputened设置

  • 1.4.0 新增 滑动开关,用于切换 on/off 状态。 示例 基本用法 <cube-switch v-model="value"> Switch </cube-switch> export default { data() { return { value: true } } } value值true对应着 on 状态(开) ,value值false

  • 在适配器中 我试过了所有的方法,但是很难从RecolyerView中滑动项目,并且当snackbar的undo被按下时,我希望该项目重新出现。我希望从RecolyerView中滑动项目,并且当项目被滑动时,底部的项目应该向上移动。