我已经设置了一个 viewPager,它应该显示大约 50 张分辨率为 1500,2100 像素的图像。图片由用户自行提供。所以我需要缩小我用这段代码做的图像:
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
//imageFile is a string to the image location.
Bitmap bm = BitmapFactory.decodeFile(imagefile);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bm, width, height, true);
当图像被缩小时,我将它添加到 arrayList 中的 viewpager,它只适用于少数图像。但是现在我需要加载 50 张图片,我该怎么做呢?即使在缩小图像之后,我也会遇到 outOfMemory 错误。
使用此代码添加图像(到 ViewPager):
@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(context);
//int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_medium);
//imageView.setPadding(padding, padding, padding, padding);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
//imageView.setImageResource(pages.get(position));
imageView.setImageBitmap(pages.get(position));
((ViewPager) container).addView(imageView, 0);
return imageView;
}
我希望能得到一个好的建议。我在想自己只加载几张图片并动态添加它们,但我不知道一旦我不再需要它们时如何销毁加载的图片。我愿意接受任何建议!