2014-09-19 58 views
0

我試圖實現將從URL加載圖像的全屏圖像活動。我已將所有網址設置在一個數組中。但是,不知何故,我在預覽期間看不到任何東西。使用ViewPager掃描圖像的功能

找到下面的代碼FullScreenActivity:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_full_image); 

    // get intent data 
    Intent intent = getIntent(); 

    // Selected image id 
    int position = intent.getExtras().getInt("id"); 

    Object[] s = (Object[]) intent.getSerializableExtra("full_url_array"); 
    String[] imageArray = Arrays.copyOf(s, s.length, String[].class);//intent.getExtras().getStringArray("full_url_array"); 

    CustomGridViewAdapter imageAdapter = new CustomGridViewAdapter(this, postImages); 
    List<ImageView> images = new ArrayList<ImageView>(); 

    Log.d(TAG, "imageAdapter.getCount = "+imageAdapter.getCount()); 

    // Retrieve all the images 
    for (int i = 0; i < imageAdapter.getCount(); i++) { 
     try { 
      ImageView imageView = new ImageView(this); 
      Bitmap bitmap = BitmapFactory.decodeStream((InputStream) new URL(imageArray[i]).getContent()); 
      imageView.setImageBitmap(bitmap); 
      imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
      images.add(imageView); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    Log.d(TAG, "images.size = "+images.size()); 
    // Set the images into ViewPager 
    ImagePagerAdapter pageradapter = new ImagePagerAdapter(images); 
    ViewPager viewpager = (ViewPager) findViewById(R.id.pager); 
    viewpager.setAdapter(pageradapter); 
    // Show images following the position 
    viewpager.setCurrentItem(position); 
} 

另一個問題:什麼是更好ViewPager使用:NetWorkImageView或ImageView的?

謝謝。

回答

2

所以看起來像你的活動接收指向圖像的URL數組。我用了volley framework,所以回答你的第二個問題,我用NetworkImageView顯示全屏圖像(刷卡看下......)

我的應用程序的一般流程是這樣的:

1)活動將所有網址以捆綁方式接收,與您的類似。

2.)實例化一個ImagePagerAdapter類(您編寫的擴展FragmentStatePagerAdapter)。相關的代碼是這樣的:

// Set up ViewPager and backing adapter 
mAdapter = new ImagePagerAdapter(getSupportFragmentManager(), mDataItems.size()); 
mPager = (ViewPager) findViewById(R.id.pager); 
mPager.setAdapter(mAdapter); 

其中mPager是你在你的佈局

3)在你ImagePagerAdapter類的getItem實現中定義的ViewPager,實例化一個「ImageDetailFragment」片段沿着URL傳遞圖片的「頁面」。例如:

@Override 
    public Fragment getItem(int position) { 

     final String itemLink = mDataItems.get(position); 
     return ImageDetailFragment.newInstance(itemLink); 
    } 

4.)在您的「ImageDetailFragment」上接收鏈接(作爲額外傳遞)。例如:

public static ImageDetailFragment newInstance(String imageUrl) { 
    final ImageDetailFragment f = new ImageDetailFragment(); 

    final Bundle args = new Bundle(); 
    args.putString(IMAGE_DATA_EXTRA, imageUrl); 
    f.setArguments(args); 

    return f; 
} 

然後

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mImageUrl = getArguments() != null ? getArguments().getString(IMAGE_DATA_EXTRA) : null; 
    // blah blah 
    } 

5)爲了 「秀」 的形象,用我的情況下凌空框架(或者你可以使用畢加索等)

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    // volley specific class 
    imageLoader = ((MyApp) getActivity().getApplicationContext()).getImageLoader(); 

    mImageView.setErrorImageResId(R.drawable.empty_photo); // if cannot load 
    mImageView.setImageUrl(mImageUrl, imageLoader); // load it to the NetworkImageView , volley specific implementation 

} 

您可以在Android開發者文檔看到這種類似的模式......在這裏:http://developer.android.com/training/displaying-bitmaps/display-bitmap.html#viewpager

祝您好運!

+0

謝謝alpinescrambler!我會嘗試以上方法並讓你知道。我正在使用gridview抽排。 – johnk1 2014-09-19 18:31:51