好久没更新了,最近在研究图库,今天来研究一个功能:图片预览时能放缩,并且可以左右滚动预览多个图片。
实现这个功能要注意两点:
1、放缩图片,对单张图片实现放缩功能,这里实现用多点触控实现放缩,左右上下滑动对放大的图片实现预览,并且能还原到原来尺寸。这里使用photoview这个开源框架控件。
https://codeload.github.com/chrisbanes/PhotoView/zip/master
2、viewpager滑动,这里需要继承viewpager,然后需要对viewpager触摸事件拦截:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
try {
if(((ViewPagerActivity)mCtx).getCurrentPageStatus()){
return super.onInterceptTouchEvent(ev);
}else{
return false;
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
}
这里需要捕获异常,否则索引溢出,其次要加个限制在图片还原到之前尺寸大小就可以实现滑动,不冲突触摸滑动事件。
public boolean getCurrentPageStatus() {
//获取当前展示view
PhotoView pv = (PhotoView) mViewPager.findViewById(mCurrentPager);
if (pv.getScale() == 1.0f) {
return true;
} else {
return false;
}
}
static class SamplePagerAdapter extends PagerAdapter {
private static int[] sDrawables = { R.drawable.wallpaper,
R.drawable.wallpaper, R.drawable.wallpaper,
R.drawable.wallpaper, R.drawable.wallpaper,
R.drawable.wallpaper };
@Override
public int getCount() {
return sDrawables.length;
}
@Override
public View instantiateItem(ViewGroup container, int position) {
PhotoView photoView = new PhotoView(container.getContext());
photoView.setImageResource(sDrawables[position]);
//给view做标记
photoView.setId(position);
// Now just add PhotoView to ViewPager and return it
container.addView(photoView, LayoutParams.MATCH_PARENT,
LayoutParams.MATCH_PARENT);
return photoView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
}
这样基本就能实现图库展示图片功能。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。