0

我试图通过 getchildat(index) 从 pageviewer 获取当前视图,然后从视图中获取位图,但它总是返回 null 我从 MyPageChangeListener 获取我的索引,我试图设置索引的手动值但仍然返回 null

public class ImagePagerActivity extends Activity {

private static final String STATE_POSITION = "STATE_POSITION";
DisplayImageOptions options1;
public static ViewPager pager;
ImageLoader imageLoader;
InputStream inputStream2;
List<String> lol;
private Bitmap bitmapz;
int pagerPosition;
int positions;
 boolean _isJustAfterResume = false;
 int zpositions;
 int width;
 int height;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fullimage);


     Intent i = getIntent();
    List<String> lol = i.getStringArrayListExtra("lol");
    this.lol = lol;
     pagerPosition = i.getExtras().getInt("id");

    if (savedInstanceState != null) {
        pagerPosition = savedInstanceState.getInt(STATE_POSITION);
    }

         options1 = new DisplayImageOptions.Builder()
        .showImageForEmptyUri(R.drawable.ic_stub)
        .showImageOnFail(R.drawable.ic_stub)
        .resetViewBeforeLoading()
        .cacheOnDisc()
        .imageScaleType(ImageScaleType.EXACTLY)
        .bitmapConfig(Bitmap.Config.RGB_565)
        .displayer(new FadeInBitmapDisplayer(300))
        .build();
         ImagePagerAdapter imagePagerAdapter = new ImagePagerAdapter(lol);



    pager = (ViewPager) findViewById(R.id.myfivepanelpager);
    pager.setAdapter(imagePagerAdapter);
    pager.setCurrentItem(pagerPosition);
     registerForContextMenu(pager);

      View child  = pager.getChildAt(zpositions); // always returns null
         ImageView currentImageView = (ImageView) child.findViewById(R.id.image1);
         BitmapDrawable bd = (BitmapDrawable) currentImageView.getDrawable();
         Bitmap bmp = bd.getBitmap();


     pager.setOnPageChangeListener(new MyPageChangeListener(){

        @Override
        public void onPageSelected(int position) {


            super.onPageSelected(position);
        }



     });



}


   private class ImagePagerAdapter extends PagerAdapter {
    private List<String>  images;
    private LayoutInflater inflater;
    private ImageLoader imageLoader;
    private int nposition;
    private Bitmap zBitmap;
    private View imageLayout;
    ViewPager viewPager;


    ImagePagerAdapter(List<String> lol) {

        this.images = lol;
        inflater = getLayoutInflater();
          ImageLoader imageLoader = ImageLoader.getInstance();
            this.imageLoader = imageLoader;
    }
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        ((ViewPager) container).removeView((View) object);
    }
    @Override
    public void finishUpdate(View container) {
    }
    @Override
    public int getCount() {
        return images.size();
    }


    @Override
    public Object instantiateItem(ViewGroup container, int position) {
         viewPager = (ViewPager) container;

        View imageLayout = inflater.inflate(R.layout.item_pager_image, container, false);
        this.imageLayout = imageLayout;
        ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image1);
         String imString = images.get(position);
            String imageUria = "assets://"+imString;
            this.nposition = position;
            imageLoader.displayImage(imageUria, imageView, options1 );




            viewPager.addView(imageLayout, 0);


        return imageLayout;
    }


    public boolean isViewFromObject(View view, Object object) {
        return view.equals(object);
    }

    public void restoreState(Parcelable state, ClassLoader loader) {
    }

    public Parcelable saveState() {
        return null;
    }

    public void startUpdate(View container) {
    }




}

}

4

2 回答 2

0
 imageLoader.loadImage(lol.get(pager.getCurrentItem())), new SimpleImageLoadingListener(){
        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {

            Bitmap bmp = loadedImage;

            //do whatever you want 
        }
于 2013-09-26T15:19:21.837 回答
0
getBitmapFromView(pager.getChildAt(1));//will return bitmap   




public static Bitmap getBitmapFromView(View view) {
        Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), view
                .getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(returnedBitmap);
        Drawable bgDrawable = view.getBackground();
        if (bgDrawable != null)
            bgDrawable.draw(canvas);
        else
            // if we unable to get background drawable then we will set white color as wallpaper
            canvas.drawColor(Color.WHITE);
        view.draw(canvas);
        return returnedBitmap;
    }
于 2014-06-27T09:59:57.893 回答