实现图片浏览器

图片浏览器在App中很常见,如新闻类app中,其具有可滑动,双指缩放,图片标识等特点。其中用到控件主要是viewpager,下面我就试着实现自己一个自己的图片浏览器,废话不说先看效果图,这个图片浏览器是在上一篇自动轮播的基础上实现的。



其实点击轮播器后是跳转到一个铺满viewpager的activity中了,只不过这个activity的背景色为黑色而已,就是这么简单。那些先看这个activity的布局文件吧




viewpager铺满整个屏幕,textview显示图片索引,imageview显示返回按键。

图片浏览器中的图片是支持手势缩放的,这里的item布局用到的是github上的一个开源控件photoView而不是imageview,布局如下:


然后是一大段非常简单的代码,初始化控件,设置adapter加载图片,监听滑动事件

public class NewsPictureActivity extends Activity implements ViewPager.OnPageChangeListener, View.OnClickListener {private ViewPager viewPager;private ImageView back;private TextView index;private String url[];public static void startNewsPictureActivity(Context context) {Intent intent = new Intent(context, NewsPictureActivity.class);context.startActivity(intent);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.news_picture_main);url = Images.imageArray;initView();}private void initView() {viewPager = (ViewPager) findViewById(R.id.news_picture_vp);back = (ImageView) findViewById(R.id.back);index = (TextView) findViewById(R.id.new_picture_index);back.setOnClickListener(this);index.setText("1/" + url.length);viewPager.setAdapter(new VpAdapter());viewPager.setOnPageChangeListener(this);viewPager.setCurrentItem(0);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.back:finish();break;}}@Overridepublic void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}@Overridepublic void onPageSelected(int position) {//动态改变图片的索引index.setText(position + 1 + "/" + url.length);}@Overridepublic void onPageScrollStateChanged(int state) {}private class VpAdapter extends PagerAdapter {boolean isShow = true;@Overridepublic int getCount() {return url.length;}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}@Overridepublic Object instantiateItem(ViewGroup container, int position) {View view = getLayoutInflater().inflate(R.layout.news_picture_item, null);//viewpager中的item,这里用到了github上的一个支持手势的开源控件PhotoView imageView = (PhotoView) view.findViewById(R.id.picture_iv_item);//触摸屏幕的时候可以动态隐藏和显示索引和返回键imageView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {@Overridepublic void onPhotoTap(View view, float x, float y) {if (!isShow) {back.setVisibility(View.VISIBLE);index.setVisibility(View.VISIBLE);isShow = true;} else {back.setVisibility(View.GONE);index.setVisibility(View.GONE);isShow = false;}}});//图片都是从网上下载的ImageLoader.getInstance().displayImage(url[position], imageView, MyApplication.getOptions());container.addView(view);return view;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}}
}
代码中把startactivity写在这个方法中是为了提高代码重用,因为一个app中肯定不止一个地方会用到图片浏览器,这样就不用在每个地方都new一个intent了。在startNewPictureActivity中还可以把图片的URL地址传进去。





本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部