【发布时间】:2014-01-29 16:58:01
【问题描述】:
我在显示图像时遇到问题,我正在使用 Samsung Galaxy Captivate i897 测试我的程序,所以,问题是我想显示图像,我使用 ViewPager 执行此操作,但 ViewPager 总是实例化三个图像(方法instanceiteItem),之前,显示和之后的图像,我的图像是 5MB,所以 LogCat 给了我这个错误
01-29 11:35:48.656:E/dalvikvm-heap(1275):19660800 字节的外部分配对于此进程来说太大。 01-29 11:35:48.679: E/GraphicsJNI(1275): VM 不允许我们分配 19660800 字节
我想知道如何避免实例化 3 张图片中的某些图片,或者如何创建一个 imageView 来避免这个问题。
这是我的适配器的代码。
公共类 FullScreenImageViewAdapter 扩展 PagerAdapter {
private final Activity _activity;
private final ArrayList<String> _imagePaths;
// constructor
public FullScreenImageViewAdapter(Activity activity,
ArrayList<String> imagePaths)
{
this._activity = activity;
this._imagePaths = imagePaths;
}
@Override
public int getCount()
{
return this._imagePaths.size();
}
@Override
public boolean isViewFromObject(View view, Object object)
{
return view == ((RelativeLayout) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position)
{
LayoutInflater inflater = (LayoutInflater) _activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View viewLayout = inflater.inflate(R.layout.img_view, container, false);
TouchImageView imgDisplay = (TouchImageView) viewLayout
.findViewById(R.id.imgDisplay);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
Bitmap bitmap = BitmapFactory.decodeFile(_imagePaths.get(position),
options);
imgDisplay.setImageBitmap(bitmap);
((ViewPager) container).addView(viewLayout);
return viewLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
((ViewPager) container).removeView((RelativeLayout) object);
}
}
【问题讨论】:
-
你用的是什么图片? png 还是 jpeg?
-
我用的是JPG手机拍照图片
标签: android