解像度 1500,2100px で約 50 枚の画像を表示する viewPager をセットアップしました。画像はユーザー自身が提供しています。したがって、このコードで行う画像を縮小する必要があります。
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 のビューページャーに追加します。しかし、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;
}
良い提案をいただければ幸いです。いくつかの画像だけを読み込んで動的に追加することを考えていましたが、読み込んだ画像が不要になったら、それらを破棄する方法がわかりません。私はどんな提案にもオープンです!