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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
