Q:我需要什么
A:一个可以滑动的查看图片页面,和一个指示当前页码的标志(这里用TextView实现)
后续打算增加读取json数据,大图查看
Q:这东西太简单了,为什么写出来
A:作为个人记录
Q:阅读本文章需要知道哪些
A:主要了解一下ViewPager的简单使用,通过PagerAdapter。了解ImageLoader,对scantype有了解,知晓在大量数据情况下不使用ImageLoader会有什么危害
ImageLoader相关已经有人做了很多介绍,在这里链接别人写的两篇文章,可能后续自己也会总结
安卓和PC都一样,东西虽然简单,但是大家考虑的不只应该是眼前看到的,实现归实现,程序员要做的还是异常处理
接下来是一个简单的例子,初学者写的不是很好,参考了一些别人的代码,自己做一个记录
结果界面分析,布局文件不再给出
1.首先是插入网络数据
imageList.add("https://steam.indienova.com/pic/header/463/462770.jpg");
imageList.add("https://steam.indienova.com/pic/header/582/581270.jpg");
imageList.add("https://steam.indienova.com/pic/header/313/312520.jpg");
imageList.add("https://steam.indienova.com/pic/header/221/220780.jpg");
imageList.add("https://steam.indienova.com/pic/header/212/211400.jpg");
imageList.add("https://steam.indienova.com/pic/header/220/219150.jpg");
//简单插入六条测试数据
2.设置adapter和其他
private void initView() {
pageis=findViewById(R.id.page_is);
ViewPager vp = findViewById(R.id.vp);
adapter=new ViewPagerAdapter(this,imageList);
vp.setAdapter(adapter);
pageis.setText("1/"+imageList.size());
vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
int page=position+1;
pageis.setText(page+"/"+ imageList.size());
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
}
通过对ViewPager设置监听实现page显示,setPageChangeListener已经被弃用,现在使用addPageChangeListener
3.接下来是Adapter里面的代码
public class ViewPagerAdapter extends PagerAdapter{
private Context context;
private List<String> list;
public ViewPagerAdapter(Context context, List<String> list){
this.context=context;
this.list=list;
ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(context));
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
Log.d("vpisViewFromObject","isViewFromObject-----");
return view==object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container, int position) {
Log.d("vpinstantiateItem","instantiateItem-----"+position);
ImageView imageView=new ImageView(context);
ImageLoader.getInstance().displayImage(list.get(position),imageView);
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
Log.d("vpdestroyItem","destroyItem-------");
container.removeView((View) object);
}
}