我正在尝试实现全屏图像活动,该活动将从URL加载图像。我已经在数组中设置了所有的URL。但是,在预览期间,我什么都看不到。
在下面找到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?
感谢。
答案 0 :(得分:2)
看起来您的活动会收到一个指向图像的URL数组。我使用volley framework,所以为了回答你的第二个问题,我使用NetworkImageView全屏显示图像(滑动以查看下一个...)
我的应用程序的一般流程如下:
1。)活动将所有URL作为捆绑包收到,与您的相似。
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是您在布局中定义的ViewPager
3.)在你的ImagePagerAdapter类中,getItem实现,实例化&#34; ImageDetailFragment&#34;片段传递图像的URL为&#34;页面&#34;。例如:
@Override
public Fragment getItem(int position) {
final String itemLink = mDataItems.get(position);
return ImageDetailFragment.newInstance(itemLink);
}
4。)在你的&#34; ImageDetailFragment&#34;上接收链接(作为额外传递)。 。例如:
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。)To&#34; show&#34;图像,在我的情况下使用排球框架(或者你可以使用毕加索等......)
@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
祝你好运!