我正在膨胀linearlayout并在viewpager中创建视图,但是当我创建此视图时,它给出了堆大小我不明白我错在哪里。我正在使用picassa库在这3个视图中加载图像;所以在构造函数中膨胀布局它会给堆内存吗?
private ViewPager awesomePager;
private static int NUM_AWESOME_VIEWS = 3;
private AwesomePagerAdapter awesomeAdapter;
ImageView mImageview;
ImageView lImageview;
ImageView rImageview;
private View mLeft;
private View mRight;
private View mMiddle;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
awesomePager = (ViewPager) findViewById(R.id.awesomepager);
awesomeAdapter = new AwesomePagerAdapter(awesomePager,this);
awesomePager.setAdapter(awesomeAdapter);
awesomePager.setCurrentItem(1);
awesomePager.setOnPageChangeListener(awesomeAdapter);
awesomePager.setPageMargin(20);
}
private class AwesomePagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
LayoutInflater inflater;
public AwesomePagerAdapter(ViewPager p,Context context) {
super();
inflater= (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mLeft=inflater.inflate(R.layout.leftcustom_imagevideo,null);
mMiddle=inflater.inflate(R.layout.leftcustom_imagevideo,null);
mRight=inflater.inflate(R.layout.leftcustom_imagevideo,null);
p.addView(mLeft);
p.addView(mMiddle);
p.addView(mRight);
lImageview=(ImageView)mLeft.findViewById(R.id.imageView);
mImageview=(ImageView)mMiddle.findViewById(R.id.imageView);
rImageview=(ImageView)mRight.findViewById(R.id.imageView);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_IDLE) {
awesomePager.setCurrentItem(1, false);
pagechange=false;
}
}
}
@Override
public int getCount() {
return NUM_AWESOME_VIEWS;
}
@Override
public Object instantiateItem(View collection, int position) {
if (position == 0) {
return mLeft;
} else if (position == 1) {
return mMiddle;
} else {
return mRight;
}
}
@Override
public void destroyItem(View collection, int position, Object view) {
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==(object);
}
}
载入图片
private void nextImage(String tpath,int position)
{
try
{
DisplayMetrics metrics = getResources().getDisplayMetrics();
int imageWidth = (int) ( (float) metrics.widthPixels / 1.5 );
int imageHeight = (int) ( (float) metrics.heightPixels / 1.5 );
tpath=tpath.replaceAll(" ", "\\ ");
Uri uri = Uri.fromFile(new File(tpath));
if(position==0){
lImageview.setImageDrawable(null);
Picasso.with(DemoNewActivity.this).load(uri)
.resize(imageWidth,imageHeight).config(Config.RGB_565).into(lImageview);
}
else if(position==1){
mImageview.setImageDrawable(null);
Picasso.with(DemoNewActivity.this).load(uri)
.resize(imageWidth,imageHeight).config(Config.RGB_565).into(mImageview);
}
else if(position==2){
rImageview.setImageDrawable(null);
Picasso.with(DemoNewActivity.this).load(uri)
.resize(imageWidth,imageHeight).config(Config.RGB_565).into(rImageview);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}