如何在android中处理滑动?

时间:2014-03-18 11:20:33

标签: android image swipe

我在我的应用中创建了滑动功能。当我在最后一张图像上时,我从右向左滑动。它仍然在相同的图像上很好。然后我再次从右向左滑动。然后从左到右我的应用程序崩溃。第一张图像上的类似情况。我知道这是因为变量的增量。我想如果用户在最后一张图片上,他甚至多次从右向左滑动。然后,如果他从左向右滑动以前的图像来。请帮我解决这个问题。 位置是b / w 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]);
   }

当我在最后一张图片上时,我正在获取数组索引超出范围的错误长度= 9 index = 9,然后从右向左滑动,然后从左向右滑动。

我得到数组索引超出范围的错误。 length = 9 index = -1。当我在第一张图像上并从左向右滑动时,然后从右向左滑动。

编辑 -

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

2 个答案:

答案 0 :(得分:2)

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

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

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

同样,你想改变你的第二个条件,这样你只有在下一个索引是有效索引的情况下才增加position - 如果你是最后一个索引,你不想继续下一个图像一,即positionmThumbId.length - 1。所以你的修改条件是:

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

答案 1 :(得分:0)

这应该可以做到这一点:)我没有测试它但它应该可以工作。

public void onRightToLeftSwipe(){
            Log.i(logTag, "RightToLeftSwipe!");
            if(position < mThumbId.length - 1){
                position++;
                 changeBackground();
            }
    }

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

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