ViewPager——之PhotoView

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

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

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

	}

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

时间: 2024-08-01 06:28:13

ViewPager——之PhotoView的相关文章

PhotoView

一.PhotoView的作用 PhotoView是继承ImageView的自定义控件,支持双击或者双指缩放.不仅支持单个的ImageView,同时也能与ViewPager.ScollView等父控件很好的兼容,亦能与ImageLoader.Picasso等异步加载网路图片的框架很好的兼容. 二.使用 PhotoView的使用其实很简单,其关键点就是处理Touch事件和Matrix图形变换. 1.单张图片的图形变换 要想处理图片的图形变换,首先要获取PhotoViewAttacher对象. Pho

图片放大缩小(和ViewPager配合使用流畅显示)--第三方开源--PhotoView

图片的放大缩小实现效果是使用的github上的一个开源项目photoView实现的,下载地址:https://github.com/chrisbanes/PhotoView 下面看测试代码: activity_main.xml: 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/too

android viewpager嵌套使用photoview异常问题

最近,做项目时,遇到一个需求,需要像淘宝评论那样,一组图点开,然后可以双指滑动放大,并左右切换换图的功能.自然就想到了使用viewpager+photoview来实现这一功能,但是在实现后,却发现一个bug,就是在使用双手放大图片时,会抛异常,抛的异常是如下: E/AndroidRuntime(22447): java.lang.IllegalArgumentException: pointerIndex out of range E/AndroidRuntime(22447): at andr

PhotoView开源项目剖析

http://blog.csdn.net/wu928320442/article/details/43056731 介绍 上一节呢,我们介绍了怎么下载和编译Android源码,这节呢,我们来讨论PhotoView这个开源项目,也是我们用的非常频繁的一个,用来帮助产生一个容易实现ImageView缩放的这么个东东. 功能特性 支持放缩超出边界,多点触控和双击事件 滚动和滑动 和ViewPager等能完美兼容 矩阵变化等有回调,方便前台其他展示的改变 单击,长按都有回调提醒 源码剖析 那么怎么来学习

Android开源库--PhotoView图片查看

如果说我比别人看得更远些,那是因为我站在了巨人的肩上. github地址:https://github.com/chrisbanes/PhotoView 介绍 在一般的应用中,总会遇到查看图片的功能,点击图片之后,详细查看,PhotoView这个开源控件就帮我们很好的完成了这个功能. 它继承自ImageView,支持缩放,以及各种手势的监听. 特性 通过多点触摸和双击来进行放大. 通过轻弹划实现平滑滚动. 在带有滚动功能的父类工作的很好(比如ViewPager) 允许当显示的矩阵发生发生改变时通

一行代码引入 ViewPager 无限循环 + 页码显示

(出处:http://www.cnblogs.com/linguanh) 前序: 网上的这类 ViewPager 很多,但是很多都不够好,体现在 bug多.对少页面不支持,例如1~2张图片.功能整合不全(无限+页码)等等,本类由我从零到无完成的,基本已找完 bug,注释丰富,方便大家理解. 特点: 1,代码量少 , 共两个类,约合 310 行代码 (除去注释) 2,可扩展 , 再加个 handler 即可实现自动轮播 3,时间复杂度低 4,耦合度低,只依赖了 imageLoader,可以自己切换

Android高级控件——GridView ScrollView ViewPager (上)

Android高级控件--GridView ScrollView ViewPager (上) GridView 网格视图,网格视图组件,九宫图显示数据表格(一种控件) ScrollView滚动视图 是一个单一容器,只能包含一个组件. ViewPager左右滑动 SlideMenu侧边栏 PullToRefreshListView下拉刷新 ListView新闻 原声列表视图 <?xml version="1.0" encoding="utf-8"?> &l

简单实现图片间的切换动画 主要用到ViewPager

简单实现图片间的切换动画 主要用到ViewPagerViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view.ViewPager类需要一个PagerAdapter适配器类给它提供数据 PagerAdapter适配器,必须实现四个方法getCount.isViewFromObject.destroyItem.instantiateItem import android.os.Bundle;import android.support.v4.view.PagerA

52、图片缩放库 PhotoView

PhotoView的简介: 这是一个图片查看库,实现图片浏览功能,支持pinch(捏合)手势或者点击放大缩小.支持在ViewPager中翻页浏览图片. PhotoView 是一款扩展自Android ImageView ,支持通过单点/多点触摸来进行图片缩放的智能控件.功能实用和强大. PhotoView的功能: 图片浏览查看 双指缩放 单点触摸缩放 图片缩放模式设置. Android PhotoView 的用法: 导入 photoview-library-1.2.2.jar 包,布局XML里设