我们专注攀枝花网站设计 攀枝花网站制作 攀枝花网站建设
成都网站建设公司服务热线:400-028-6601

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

ViewPager——之PhotoView-创新互联

  好久没更新了,最近在研究图库,今天来研究一个功能:图片预览时能放缩,并且可以左右滚动预览多个图片。

10余年建站经验, 成都网站制作、成都网站设计客户的见证与正确选择。创新互联建站提供完善的营销型网页建站明细报价表。后期开发更加便捷高效,我们致力于追求更美、更快、更规范。

   实现这个功能要注意两点:

   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;
		}

	}

这样基本就能实现图库展示图片功能。

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


当前标题:ViewPager——之PhotoView-创新互联
分享网址:http://mswzjz.cn/article/icpdh.html

其他资讯