用开源项目PhotoView实现图片的双指缩放和双击放大缩小
生活随笔
收集整理的這篇文章主要介紹了
用开源项目PhotoView实现图片的双指缩放和双击放大缩小
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
項目地址:https://github.com/chrisbanes/PhotoView
?
用開源項目有個好處,一是實現簡單,二是bug少。那么我們就來說下這個項目能夠實現的效果:
1.單個圖片的雙指縮放,雙擊放大縮小
PhotoViewAttacher mAttacher;ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Any implementation of ImageView can be used!mImageView = (ImageView) findViewById(R.id.iv_photo);// Set the Drawable displayedDrawable bitmap = getResources().getDrawable(R.drawable.ic_launcher);mImageView.setImageDrawable(bitmap);// Attach a PhotoViewAttacher, which takes care of all of the zooming// functionality.mAttacher = new PhotoViewAttacher(mImageView);?
2.圖片的旋轉效果,可以精準指定旋轉的度數
private PhotoView photo;private final Handler handler = new Handler();private boolean rotating = false;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);photo = new PhotoView(this);photo.setImageResource(R.drawable.wallpaper);setContentView(photo);photo.setRotationBy(10);}?
3.放入viewpager來做照片瀏覽,瀏覽中可以放大和縮小(這里的viewpager可以設置是否允許左右滑動,如果不用這功能,就直接用普通的viewpager)
private static final String ISLOCKED_ARG = "isLocked";private ViewPager mViewPager;private MenuItem menuLockItem;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_view_pager);mViewPager = (HackyViewPager) findViewById(R.id.view_pager);setContentView(mViewPager);mViewPager.setAdapter(new SamplePagerAdapter());if (savedInstanceState != null) {boolean isLocked = savedInstanceState.getBoolean(ISLOCKED_ARG, false);((HackyViewPager) mViewPager).setLocked(isLocked);}}static class SamplePagerAdapter extends PagerAdapter {private static final int[] sDrawables = { R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper,R.drawable.wallpaper, R.drawable.wallpaper, R.drawable.wallpaper };@Overridepublic int getCount() {return sDrawables.length;}@Overridepublic View instantiateItem(ViewGroup container, int position) {//定義可以縮放的圖片對象 PhotoView photoView = new PhotoView(container.getContext());photoView.setImageResource(sDrawables[position]);// Now just add PhotoView to ViewPager and return itcontainer.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);return photoView;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic boolean isViewFromObject(View view, Object object) {return view == object;}}?
這是官方文檔的例子
ImageView mImageView; PhotoViewAttacher mAttacher;@Override public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// Any implementation of ImageView can be used!mImageView = (ImageView) findViewById(R.id.iv_photo);// Set the Drawable displayedDrawable bitmap = getResources().getDrawable(R.drawable.wallpaper);mImageView.setImageDrawable(bitmap);// Attach a PhotoViewAttacher, which takes care of all of the zooming functionality.mAttacher = new PhotoViewAttacher(mImageView); }// If you later call mImageView.setImageDrawable/setImageBitmap/setImageResource/etc then you just need to call attacher.update();?
下面給出的源碼是我修改過的,我把原來的放大兩次變成了放大一次,然后再雙擊的話就縮小到原圖。至于單擊直接退出的效果我給出一個思路,點擊一個縮略圖后開啟一個activity,用漸變的效果顯示。在這個彈出的activity放一個可以縮放的圖片,然后給這個圖片加個監聽器(源碼中我已經加了),點擊后這個activity漸變消失。很簡單吧~ 不過這里面需要注意的是縮略圖的設置還有彈出activity時很可能要用進度條來等待網絡圖片
?
源碼下載:http://download.csdn.net/detail/shark0017/7710153
總結
以上是生活随笔為你收集整理的用开源项目PhotoView实现图片的双指缩放和双击放大缩小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【矩阵范数与秩、正定】
- 下一篇: DBGrideh 实现自动排序