android - 如何在android中处理滑动?

标签 android image swipe

我正在我的应用中创建滑动。当我在最后一张图片上时,我从右向左滑动。它仍然在同一图像上,这很好。然后我再次从右向左滑动。然后从左到右我的应用程序崩溃了。第一张图片上的类似情况。我知道这是因为变量的增加。我想要如果用户在最后一张图片上,他甚至多次从右向左滑动。然后,如果他从左向右滑动,就会出现之前的图像。请帮我解决这个问题。 位置在黑白 0 到 8 之间。

代码-

position = i.getExtras().getInt("id");
public void onRightToLeftSwipe(){
            Log.i(logTag, "RightToLeftSwipe!");
            if(position<mThumbId.length){
                position++;
                 changeBackground();
            }
    }

        public void onLeftToRightSwipe(){
            Log.i(logTag, "LeftToRightSwipe!");
            if(position>=0){
                position--;
                changeBackground();
           }
        }

      private void changeBackground(){
        full.setBackgroundResource(mThumbId[position]);
   }

当我在最后一张图像上并从右向左滑动然后从左向右滑动时,我得到数组索引超出界限错误 length=9 index=9。

我收到数组索引超出范围的错误。长度=9 索引=-1。当我在第一张图片上时,从左向右滑动,然后从右向左滑动。

编辑-

我想如果用户在第一张图片上并且他从左向右滑动固定图像。当他从右向左滑动时,下一张图片出现了。

最佳答案

您需要更改递增或递减 position 的条件,以便它不会低于零或超过最后一个索引。从左到右的正确条件是这样的:

if(position > 0) {
    position--;
    changeBackground();
}

这将确保如果您当前位于第一张图片上,则不会继续减少位置(因为您想留在原处)。如果有以前的图像,它只会转到以前的图像。

同样,您想要更改第二个条件,以便仅在下一个索引有效时才增加 position - 如果您在最后一个,即 positionmThumbId.length - 1。所以你修改后的条件是这样的:

if(position < mThumbId.length - 1) {
    position++;
    changeBackground();
}

关于android - 如何在android中处理滑动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22477819/

相关文章:

android - 尝试查看 Activity 预览时,我在最新的 android studio 中出现渲染错误

ios - 将 Koloda 库与 Parse 数据源一起使用

ios - 如何使用 UISwipeGestureRecognizer 滑动以滑入并刷新相同的 uitableview

navigation - 如何在Nativescript中使用滑动手势实现页面之间的导航

jquery - 多页 jQuery 图片库

javascript - 图像 blob 加载和 css 过滤器

java - 安卓蓝牙连接工具

java - 将显式 Intent 更改为隐式 Intent Android

android - 如何确保 admob 出现在我的应用中

javascript - 延迟加载 "responsive"图片(未知高度)