PagerAdapter当我在android中扩充布局时给出堆大小?

时间:2014-10-31 11:46:07

标签: android android-viewpager android-pageradapter

我正在膨胀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();

        }

    }

0 个答案:

没有答案