日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用开源项目PhotoView实现图片的双指缩放和双击放大缩小

發布時間:2023/12/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用开源项目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实现图片的双指缩放和双击放大缩小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。