android - 如何在Android中实现无尽的画廊?

标签 android gallery adapter

我在我的应用程序中使用画廊布局。当用户将图库中的图片从左向右移动时它会起作用(它是无限的,这意味着元素会再次重复)。但是当用户从右向左移动并到达第一个元素时,它没有。之后没有元素来了。但我也想重复这一方面的内容。你能给我一些建议吗?

 Gallery g = (Gallery) findViewById(R.id.gallery);
        g.setAdapter(new ImageAdapter(this));
        g.setFocusable(true);
        g.setSelection((int)(Integer.MAX_VALUE / 2) - (Integer.MAX_VALUE / 2)% mImageIds.length);        
        g.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) 
            {
                try {
                    imageid=position;
                    ((ImageView)findViewById(R.id.ImageViewlarge)).setImageResource(mImageIds[position]);
                    ((TextView)findViewById(R.id.TextViewImageName)).setText(imgNames[position]);
                     mp = MediaPlayer.create(SeaSpell.this,audioTrack[position]);

                        } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }

                }
            });


        }

Screenshot Frontgallery

如何使我的画廊 View 循环显示?我可以从左到右无限地进行,但是当我从右到左拖动时,它会显示终点。

最佳答案

在getView中:

if(position>21){
    position=0;
}

这应该被删除,因为它应该由 checkPosition 函数处理。

在检查位置:

对于模运算符 ( % ),给定 a % b如果0 <= a < b那么结果将是a .对于 b <= a < 2*b那么结果将是a-b , 所以如果 b == a ,则结果为 0 .这对任何正整数都会继续,因此检查应该是:

if (position > 0)
    position = position % mImageIds.length;

现在,您缺少的是处理 position < 0 的情况.

a    a%3    a    a%3    f(a)
0    0      0    0      0
1    1     -1   -1      2
2    2     -2   -2      1
3    0     -3    0      0
4    1     -4   -1      2
5    2     -5   -2      1
6    0     -6    0      0

在这种情况下,我们想要的是让它回绕到列表的末尾 -- f(a)在上表中。

从上表可以看出,如果a则为负 -b < a <= 0 .另外,如果我们制作 f(a) = (a % b) + b我们得到了我们想要的结果。

这意味着 checkPosition 中的逻辑变为:

position = position % mImageIds.length;
if (position < 0)
    position = position + mImageIds.length;

这应该适用于 position 的所有值与 mImageIds.length 的值无关.

关于android - 如何在Android中实现无尽的画廊?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3393918/

相关文章:

css - Blueimp gallery 在一页上实现多次

android - ListView动画刷新适配器android

javascript - Android webview - XMLHttpRequest 无法加载 Origin <url> 是 Access-Control-Allow-Origin 不允许的

android - 根据条件对 Spinner 中的值进行排序

javascript - 如何使图像出现在 Javascript 中

android - 如何合并图库中每个图像的按钮?

ArrayList 上的 JAVA SimpleDateFormat 更改日期

android - Realm OrderedRealmCollectionChangeListener 不起作用

android - Retrofit 2.0 的自定义类型适配器

android - 在移动设备上使用 Adob​​e Air 消除回声