我想制作一个图片轮播器(ViewPager),但是遇到了内存溢出的问题。
我读过一些资料,建议使用位图(Bitmaps)或者像“reorganize()”这样的方法来解决问题,但我并不理解。
以下是我的代码:
适配器:
如何获得更好的性能并避免OutOfMemory错误
非常感谢你!
我读过一些资料,建议使用位图(Bitmaps)或者像“reorganize()”这样的方法来解决问题,但我并不理解。
以下是我的代码:
适配器:
public class app_info_Adapter extends PagerAdapter {
private Activity act;
int[] pictures = {
R.drawable.1,
R.drawable.2,
R.drawable.3,
R.drawable.4
};
public app_info_Adapter(Activity act) {
this.act = act;
}
@Override
public void destroyItem(View collection, int position, Object o) {
View view = (View)o;
((ViewPager) collection).removeView(view);
view = null;
}
@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub
}
@Override
public int getCount() {
return pictures.length;
}
@Override
public Object instantiateItem(View context, int position) {
ImageView imageView = new ImageView(act);
imageView.setImageResource(pictures[position]);
LayoutParams imageParams = new LayoutParams();
imageParams.height = LayoutParams.WRAP_CONTENT;
imageParams.width = LayoutParams.WRAP_CONTENT;
imageView.setLayoutParams(imageParams);
((ViewPager) context).addView(imageView);
return imageView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==((ImageView)object);
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub
}
@Override
public Parcelable saveState() {
// TODO Auto-generated method stub
return null;
}
@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
}
}
活动
@Override
protected void onStart() {
super.onStart();
setContentView(R.layout.app_info);
ViewPager pager = (ViewPager)findViewById(R.id.viewpager);
app_info_Adapter myPagerAdapter = new app_info_Adapter(this);
pager.setAdapter(myPagerAdapter);
}
如何获得更好的性能并避免OutOfMemory错误
非常感谢你!
<application>
标签中使用android:largeHeap="true"
。 - Piyush