2013-04-18 69 views
0

我試圖通過getchildat(index)從pageviewer獲取當前視圖,然後從視圖中獲取位圖,但它總是返回null我從MyPageChangeListener獲取我的索引,並試圖設置手動值指數,但仍返回nullandroid從pageviewer獲取當前位圖

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) { 
    } 




} 

}

回答

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 
     } 
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; 
    }