Android使用Photoview實(shí)現(xiàn)圖片左右滑動(dòng)及縮放功能
我想,不管是做什么樣的app。一般都會(huì)涉及到圖片點(diǎn)擊方法,和左右滑動(dòng)的功能吧。今天我就把自己的實(shí)現(xiàn)拿來分享一下。圖片的加載用到了picasso的圖片加載工具。
第一步:注入依賴
compile 'com.squareup.picasso:picasso:2.5.2' compile 'com.github.chrisbanes:PhotoView:1.3.0'
第二步,我們就來實(shí)現(xiàn)這個(gè)功能。多張圖片左右滑動(dòng),這需要用到ViewPager這個(gè)類。
且看布局:
<uk.co.senab.photoview.sample.HackyViewPager xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/iv_photo" android:layout_width="match_parent" android:layout_height="match_parent"/>
這里用到了自定義的ViewPager
public class HackyViewPager extends ViewPager { public HackyViewPager(Context context) { super(context); } public HackyViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { return super.onInterceptTouchEvent(ev); } catch (IllegalArgumentException e) { e.printStackTrace(); return false; } } }
這個(gè)是點(diǎn)擊之后跳轉(zhuǎn)到大圖的Activity,來顯示大圖。最重要也是很簡(jiǎn)單的一步:
package uk.co.senab.photoview.sample; import android.os.Bundle; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.view.ViewGroup; import com.squareup.picasso.Callback; import com.squareup.picasso.Picasso; import uk.co.senab.photoview.PhotoView; import uk.co.senab.photoview.PhotoViewAttacher; public class PicassoSampleActivity extends AppCompatActivity { ViewPager mViewPager; //String position; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple); mViewPager = (HackyViewPager) findViewById(R.id.iv_photo); setContentView(mViewPager); mViewPager.setAdapter(new SamplePagerAdapter()); //position=getIntent().getStringExtra("position"); //設(shè)置默認(rèn)的坐標(biāo),實(shí)際情況不要寫死,只需點(diǎn)擊哪張圖片的position,并傳過來接受就可以了,就默認(rèn)顯示點(diǎn)擊圖片的大圖。 //mViewPager.setCurrentItem(Integer.parseInt(position)); mViewPager.setCurrentItem(2); } static class SamplePagerAdapter extends PagerAdapter { //這里暫時(shí)寫死了,實(shí)際情況中要從服務(wù)端獲取圖片地址結(jié)合,傳過來 private static final String[] 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 public int getCount() { return url.length; } @Override public View instantiateItem(ViewGroup container, int position) { PhotoView photoView = new PhotoView(container.getContext()); final PhotoViewAttacher attacher = new PhotoViewAttacher(photoView); Picasso.with(container.getContext()) .load(url[position]) .into(photoView, new Callback() { @Override public void onSuccess() { attacher.update(); } @Override public void onError() { } }); container.addView(photoView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.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; } } }
有了這個(gè)工具我們很輕松就實(shí)現(xiàn)了圖片點(diǎn)擊放大,左右活動(dòng),縮放等功能。
相關(guān)文章
簡(jiǎn)單仿寫Android控件SlidingMenu的實(shí)例代碼
下面小編就為大家分享一篇簡(jiǎn)單仿寫Android控件SlidingMenu的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-01-01詳解Android權(quán)限管理之Android 6.0運(yùn)行時(shí)權(quán)限及解決辦法
本篇文章主要介紹Android權(quán)限管理之Android 6.0運(yùn)行時(shí)權(quán)限及解決辦法,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-11-11Android實(shí)現(xiàn)讀寫JSON數(shù)據(jù)的方法
這篇文章主要介紹了Android實(shí)現(xiàn)讀寫JSON數(shù)據(jù)的方法,以完整實(shí)例形式分析了Android解析及生成json數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android側(cè)滑菜單之DrawerLayout用法詳解
今天小編就為大家分享一篇關(guān)于Android側(cè)滑菜單之DrawerLayout用法詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03Android圖表庫(kù)HelloChart繪制多折線圖
這篇文章主要為大家詳細(xì)介紹了Android圖表庫(kù)HelloChart繪制多折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Android StepView實(shí)現(xiàn)物流進(jìn)度效果
這篇文章主要為大家詳細(xì)介紹了Android StepView實(shí)現(xiàn)物流進(jìn)度效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Android 開發(fā)音頻組件(Vitamio FAQ)詳細(xì)介紹
本文主要介紹Android開發(fā)音頻播放器,Vitamio是Android播放器組件,支持幾乎所有視頻格式和網(wǎng)絡(luò)視頻流,希望能幫助開發(fā)Android 音頻播放的小伙伴2016-07-07Android 四種動(dòng)畫效果的調(diào)用實(shí)現(xiàn)代碼
在這里, 我將每種動(dòng)畫分別應(yīng)用于四個(gè)按鈕為例,需要的朋友可以參考下2013-01-01