android自动画廊,Android:使画廊无限循环的图像

我在我的项目中使用了一个画廊,其中我添加了四个图像,我希望它从右侧和左侧都是无限的.我该如何做到这一点?

解决方法:

主要思想是在你的getView方法中,你必须使用

position = position % imagesArray.length;

if (position < 0)

position = position + imagesArray.length;

imagesArray是将图像保存在res文件夹中的数组.例如:

public class CircularGallery extends Activity {

/** Called when the activity is first created. */

private Integer[] imagesArray = { R.drawable.picture1, R.drawable.picture2, R.drawable.picture3, R.drawable.picture4, R.drawable.picture5, R.drawable.picture6 , R.drawable.picture7 };

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Gallery g = (Gallery) findViewById(R.id.gallery);

g.setAdapter(new ImageAdapter(this));

g.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView parent, View v, int position, long id) {

if (position >= imagesArray.length) {

position = position % imagesArray.length;

}

Toast.makeText(CircularGallery.this, "" + position, Toast.LENGTH_SHORT).show();

}

});

}

public class ImageAdapter extends BaseAdapter {

int mGalleryItemBackground;

private Context mContext;

public ImageAdapter(Context c) {

mContext = c;

TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);

mGalleryItemBackground = a.getResourceId(R.styleable.Gallery1_android_galleryItemBackground, 0);

a.recycle();

}

public int getCount() {

return Integer.MAX_VALUE;

}

public Object getItem(int position) {

if (position >= imagesArraylength) {

position = position % mImageIds.length;

}

return position;

}

public long getItemId(int position) {

if (position >= imagesArray.length) {

position = position % imagesArray.length;

}

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

ImageView i = new ImageView(mContext);

if (position >= imagesArray.length) {

position = position % imagesArray.length;

}

i.setImageResource(imagesArray[position]);

i.setLayoutParams(new Gallery.LayoutParams(80, 80));

i.setScaleType(ImageView.ScaleType.FIT_XY);

i.setBackgroundResource(mGalleryItemBackground);

return i;

}

public int checkPosition(int position) {

if (position >= imagesArray.length) {

position = position % imagesArray.length;

}

return position;

}

}}

此外,一些开发人员已经完成了这样的功能,您可以在他们的博客上找到来源

标签:android-gallery,android

来源: https://codeday.me/bug/20191007/1867746.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值