viewpager+photoview實(shí)現(xiàn)圖片查看器
本文實(shí)例為大家分享了Android實(shí)現(xiàn)圖片查看器的具體代碼,供大家參考,具體內(nèi)容如下

效果需要兩個(gè)手指禁止縮放,所以沒(méi)有光標(biāo),只能用手機(jī)投放電腦上錄制動(dòng)態(tài)圖片;
demo中實(shí)用了一個(gè)第三方的photoview,非常簡(jiǎn)單實(shí)用;可實(shí)現(xiàn)圖片雙擊放大,手勢(shì)放大縮小,當(dāng)手指離開屏幕時(shí)如果圖片小于原圖可自動(dòng)恢復(fù)原圖大小,可實(shí)現(xiàn)點(diǎn)擊監(jiān)聽,長(zhǎng)按圖片監(jiān)聽;
整個(gè)demo非常簡(jiǎn)單,整體就是一個(gè)activity,頁(yè)面布局只有一個(gè)viewpager和textview
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#000000"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:id="@+id/tv_num" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:textColor="#ffffff" android:textSize="30sp" /> </RelativeLayout>
在activity中初始化圖片的url,將集合傳遞到適配器FragmentPagerAdapter中即可中即可;
每個(gè)適配器中顯示一個(gè)fragment,這里自己創(chuàng)建一個(gè)即可
/**
* Created by zheng on 2017/11/27.
*/
public class PhotoFragment extends Fragment {
private String url;
private PhotoView mPhotoView;
/**
* 獲取這個(gè)fragment需要展示圖片的url
* @param url
* @return
*/
public static PhotoFragment newInstance(String url) {
PhotoFragment fragment = new PhotoFragment();
Bundle args = new Bundle();
args.putString("url", url);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
url = getArguments().getString("url");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, final ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_img, container, false);
mPhotoView = view.findViewById(R.id.photoview);
//設(shè)置縮放類型,默認(rèn)ScaleType.CENTER(可以不設(shè)置)
mPhotoView.setScaleType(ImageView.ScaleType.CENTER);
mPhotoView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
ToastUtils.showToast(getContext(),"長(zhǎng)按事件");
return true;
}
});
mPhotoView.setOnPhotoTapListener(new PhotoViewAttacher.OnPhotoTapListener() {
@Override
public void onPhotoTap(View view, float x, float y) {
ToastUtils.showToast(getContext(),"點(diǎn)擊事件,真實(shí)項(xiàng)目中可關(guān)閉activity");
}
});
Glide.with(getContext())
.load(url)
.placeholder(R.mipmap.ic_launcher)//加載過(guò)程中圖片未顯示時(shí)顯示的本地圖片
.error(R.mipmap.ic_launcher)//加載異常時(shí)顯示的圖片
// .centerCrop()//圖片圖填充ImageView設(shè)置的大小
.fitCenter()//縮放圖像測(cè)量出來(lái)等于或小于ImageView的邊界范圍,該圖像將會(huì)完全顯示
.into(mPhotoView);
return view;
}
}
fragment布局非常簡(jiǎn)單,只有一個(gè)圖片展示的view
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <uk.co.senab.photoview.PhotoView android:id="@+id/photoview" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
想要實(shí)用PhotoView和Glide需要build.gradle中添加
allprojects {
repositories {
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.chrisbanes.photoview:library:+'
compile 'com.github.bumptech.glide:glide:3.7.0'
}
點(diǎn)擊打開鏈接免費(fèi)下載源碼
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Flutter中制作翻轉(zhuǎn)卡片動(dòng)畫的完整實(shí)例代碼
最近Flutter的勢(shì)頭是越來(lái)越猛了,作為一個(gè)Android程序猿,我自然也是想要趕緊嘗試一把,這篇文章主要給大家介紹了關(guān)于在Flutter中制作翻轉(zhuǎn)卡片動(dòng)畫的相關(guān)資料,需要的朋友可以參考下2021-10-10
Android ShareSDK快速實(shí)現(xiàn)分享功能
這篇文章主要介紹了Android ShareSDK快速實(shí)現(xiàn)分享功能的相關(guān)資料,需要的朋友可以參考下2016-02-02
在Visual Studio上構(gòu)建C++的GUI框架wxWidgets的開發(fā)環(huán)境
這篇文章主要介紹了Visual Studio上構(gòu)件C++的GUI框架wxWidgets開發(fā)環(huán)境的方法,wxWidgets是一個(gè)跨多個(gè)系統(tǒng)平臺(tái)的圖形化界面開發(fā)框架,并且可用語(yǔ)言不限于C++,需要的朋友可以參考下2016-04-04
Android?adb?shell?dumpsys?audio?信息查看分析詳解
文章詳細(xì)介紹了如何使用dumpsysaudio命令查看和分析Android設(shè)備的音頻信息,包括音頻流狀態(tài)、音量、外設(shè)連接情況等,文章還提供了示例日志分析和源碼鏈接,幫助開發(fā)者更好地理解和調(diào)試Android音頻系統(tǒng)2024-11-11
Android實(shí)現(xiàn)H5與Native交互的兩種方式
Android實(shí)現(xiàn)H5頁(yè)面和Native頁(yè)面交互的方法有兩種,一種是Url攔截的方法,另一種是JavaScript注入,下面來(lái)通過(guò)這篇文章分別講解。有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。2016-12-12
Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟
這篇文章主要介紹了Android Studio4.0導(dǎo)入OpenCv4.3.0的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Android自定義View實(shí)現(xiàn)投票進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)投票進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

