Android使用Photoview实现图片左右滑动及缩放功能
我想,不管是做什么样的app。一般都会涉及到图片点击方法,和左右滑动的功能吧。今天我就把自己的实现拿来分享一下。图片的加载用到了picasso的图片加载工具。
第一步:注入依赖
compile'com.squareup.picasso:picasso:2.5.2' compile'com.github.chrisbanes:PhotoView:1.3.0'
第二步,我们就来实现这个功能。多张图片左右滑动,这需要用到ViewPager这个类。
且看布局:
这里用到了自定义的ViewPager
publicclassHackyViewPagerextendsViewPager{ publicHackyViewPager(Contextcontext){ super(context); } publicHackyViewPager(Contextcontext,AttributeSetattrs){ super(context,attrs); } @Override publicbooleanonInterceptTouchEvent(MotionEventev){ try{ returnsuper.onInterceptTouchEvent(ev); }catch(IllegalArgumentExceptione){ e.printStackTrace(); returnfalse; } } }
这个是点击之后跳转到大图的Activity,来显示大图。最重要也是很简单的一步:
packageuk.co.senab.photoview.sample; importandroid.os.Bundle; importandroid.support.v4.view.PagerAdapter; importandroid.support.v4.view.ViewPager; importandroid.support.v7.app.AppCompatActivity; importandroid.util.Log; importandroid.view.View; importandroid.view.ViewGroup; importcom.squareup.picasso.Callback; importcom.squareup.picasso.Picasso; importuk.co.senab.photoview.PhotoView; importuk.co.senab.photoview.PhotoViewAttacher; publicclassPicassoSampleActivityextendsAppCompatActivity{ ViewPagermViewPager; //Stringposition; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple); mViewPager=(HackyViewPager)findViewById(R.id.iv_photo); setContentView(mViewPager); mViewPager.setAdapter(newSamplePagerAdapter()); //position=getIntent().getStringExtra("position"); //设置默认的坐标,实际情况不要写死,只需点击哪张图片的position,并传过来接受就可以了,就默认显示点击图片的大图。 //mViewPager.setCurrentItem(Integer.parseInt(position)); mViewPager.setCurrentItem(2); } staticclassSamplePagerAdapterextendsPagerAdapter{ //这里暂时写死了,实际情况中要从服务端获取图片地址结合,传过来 privatestaticfinalString[]url={"/media/Bist9mvIYAAeAyQ.jpg","/album/whcrop%3D657%2C370%3Bq%3D90/sign=2c994e578a82b9013df895711cfd9441/09fa513d269759eede0805bbb2fb43166d22df62.jpg", "/d/file/2013-11-14/13631d143b7076dc3257b1e516a2a9a2.jpg","/f5/63/d/7.jpg"}; @Override publicintgetCount(){ returnurl.length; } @Override publicViewinstantiateItem(ViewGroupcontainer,intposition){ PhotoViewphotoView=newPhotoView(container.getContext()); finalPhotoViewAttacherattacher=newPhotoViewAttacher(photoView); Picasso.with(container.getContext()) .load(url[position]) .into(photoView,newCallback(){ @Override publicvoidonSuccess(){ attacher.update(); } @Override publicvoidonError(){ } }); container.addView(photoView,ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT); returnphotoView; } @Override publicvoiddestroyItem(ViewGroupcontainer,intposition,Objectobject){ container.removeView((View)object); } @Override publicbooleanisViewFromObject(Viewview,Objectobject){ returnview==object; } } }
有了这个工具我们很轻松就实现了图片点击放大,左右活动,缩放等功能。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。