gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:17:28 24 4
gpt4 key购买 nike

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

 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com