1. 程式人生 > >Android中第三方控制元件PhotoView的基本使用

Android中第三方控制元件PhotoView的基本使用

PhotoView的簡介:
這是一個圖片檢視庫,實現圖片瀏覽功能,支援pinch(捏合)手勢或者點選放大縮小。支援在ViewPager中翻頁瀏覽圖片。

PhotoView 是一款擴充套件自Android ImageView ,支援通過單點/多點觸控來進行圖片縮放的智慧控制元件。功能實用和強大。

PhotoView的功能:
圖片瀏覽檢視
雙指縮放
單點觸控縮放
圖片縮放模式設定

基本用法:
匯入jar包,佈局XML裡設定PhotoView
將ImageView傳入PhotoViewAttacher
程式碼演示:
使用 PhotoView進行網路圖片和本地圖片的載入,縮放和點選事件處理

佈局檔案中:

  1. <spanstyle="background-color: rgb(255, 255, 255);"><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     android:layout_width="match_parent"
  4.     android:layout_height="match_parent"
  5.     tools:context=".MainActivity"
  6.     android:orientation
    ="vertical"
  7.      >
  8.       <uk.co.senab.photoview.PhotoView
  9.         android:id="@+id/iv_photo1"
  10.         android:layout_width="match_parent"
  11.         android:layout_height="wrap_content"
  12.          />
  13.         <uk.co.senab.photoview.PhotoView
  14.         android:id="@+id/iv_photo2"
  15.         android:layout_width
    ="match_parent"
  16.         android:layout_height="wrap_content"
  17.          />
  18. </LinearLayout></span>

MainActivity中:
  1. publicclass MainActivity extends Activity {  
  2.     private PhotoView iv_photo1;  
  3.     private PhotoView iv_photo2;  
  4.     @Override
  5.     protectedvoid onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.activity_main);  
  8.         iv_photo1 = (PhotoView) findViewById(R.id.iv_photo1);  
  9.         iv_photo2 = (PhotoView) findViewById(R.id.iv_photo2);  
  10. //      localImage();
  11.         netImage();  
  12.     }  
  13. /**  
  14.  * 載入本地圖片   
  15.  *  
  16.  */
  17.     privatevoid localImage() {  
  18. //       載入本地圖片,縮放處理
  19.          try {  
  20. //       圖片在asset目錄中     
  21.          InputStream is = getAssets().open("photo2.jpg");  
  22.          Bitmap bm = BitmapFactory.decodeStream(is);  
  23.          iv_photo1.setImageBitmap(bm);  
  24.          } catch (IOException e) {  
  25.          e.printStackTrace();  
  26.          }  
  27.     }  
  28.     /** 
  29.      * 載入網路圖片 
  30.      */
  31.     privatevoid netImage() {  
  32.         ImageLoader loader = ImageLoader.getInstance();  
  33.         loader.displayImage("https://www.baidu.com/img/bdlogo.png", iv_photo2);  
  34.         iv_photo2.setOnPhotoTapListener(new OnPhotoTapListener() {  
  35.             @Override
  36.             publicvoid onPhotoTap(View arg0, float arg1, float arg2) {  
  37.                 Toast.makeText(MainActivity.this"圖片被點選了"10).show();  
  38.             }  
  39.         });  
  40.     }  
  41. }  
BaseApplication中:
  1. /** 
  2.  * 載入網路圖片時,需要對ImageLoader進行全域性配置 
  3.  * 
  4.  */
  5. publicclass BaseApplication extends Application {  
  6.     @Override
  7.     publicvoid onCreate() {  
  8.         super.onCreate();  
  9.         initImagloader(getApplicationContext());  
  10.     }  
  11.     privatevoid initImagloader(Context context) {  
  12.         File cacheDir = StorageUtils.getOwnCacheDirectory(context,  
  13.                 "photoview/Cache");// 獲取到快取的目錄地址
  14.         // 建立配置ImageLoader(所有的選項都是可選的,只使用那些你真的想定製),這個可以設定在APPLACATION裡面,設定為全域性的配置引數
  15.         ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(  
  16.                 context)  
  17.                 // 執行緒池內載入的數量
  18.                 .threadPoolSize(3).threadPriority(Thread.NORM_PRIORITY - 2)  
  19.                 .memoryCache(new WeakMemoryCache())  
  20.                 .denyCacheImageMultipleSizesInMemory()  
  21.                 .discCacheFileNameGenerator(new Md5FileNameGenerator())  
  22.                 // 將儲存的時候的URI名稱用MD5 加密
  23.                 .tasksProcessingOrder(QueueProcessingType.LIFO)  
  24.                 .discCache(new UnlimitedDiscCache(cacheDir))// 自定義快取路徑
  25.                 // .defaultDisplayImageOptions(DisplayImageOptions.createSimple())
  26.                 .writeDebugLogs() // Remove for release app
  27.                 .build();  
  28.         // Initialize ImageLoader with configuration.
  29.         ImageLoader.getInstance().init(config);// 全域性初始化此配置
  30.     }  
  31. }  
主清單配置檔案中:

  1. <uses-permission android:name="android.permission.INTERNET"/>  
  2.    <application  
  3.        android:name="com.zhhandroid.BaseApplication"
  4.        android:allowBackup="true"
  5.        android:icon="@drawable/ic_launcher"
  6.        android:label="@string/app_name"
  7.        android:theme="@style/AppTheme" >  
  8.        <activity  
  9.            android:name=".MainActivity"
  10.            android:label="@string/app_name" >  
  11.            <intent-filter>  
  12.                <action android:name="android.intent.action.MAIN" />  
  13.                <category android:name="android.intent.category.LAUNCHER" />  
  14.            </intent-filter>  
  15.        </activity>  
  16.    </application>  

效果:

需要匯入的jar包:

photoview-library-1.2.2.jar

universal-image-loader-1.9.2_sources.jar

效果展示:


jar包及原始碼下載:

相關推薦

Android第三方控制元件PhotoView基本使用

PhotoView的簡介:這是一個圖片檢視庫,實現圖片瀏覽功能,支援pinch(捏合)手勢或者點選放大縮小。支援在ViewPager中翻頁瀏覽圖片。 PhotoView 是一款擴充套件自Android ImageView ,支援通過單點/多點觸控來進行圖片縮放的智慧控制

Android獲取控制元件尺寸的時機

在Android開發的時候,我們通常要獲取控制元件的大小。在activity中獲取控制元件的大小,onCreate()方法獲取到的值往往是0,是因為在系統執行該方法的時候,控制元件還沒有繪製完成。而在activity獲取或失去焦點的時候會呼叫一個onWindowFocusCh

IOSUILabel控制元件基本使用

//UILable的大小自適應例項 UILabel *myLable = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 2, 2)];//設定位置與大小 [myLable setFont:[UIFont

Android設定控制元件可見與不可見

第一種    gone         表示不可見並且不佔用空間 第二種    visible       表示可見 第三種    invisible    表示不可見但是佔用空間 可見與不可見的表現形式有兩種。 在佈局檔案中: [html]view plaincopyprint? andr

AndroidEditText控制元件的幾種使用方法

       2. MultiAutoCompleteTextView是AutoCompleteTextView的子類,它是對AutoCompleteTextView的擴充套件,但是你必須提供一個 MultiAutoCompleteTextView.Tokenizer來區分不同的字串,通過使用這個方法:set

androidListView控制元件最簡單的用法

建立一個活動,在xml檔案中新增一個ListView控制元件,id定義為list1,並且設定為滿屏顯示,程式碼如下: <ListView android:id="@+id/list1" android:layout_width="wrap_conten

androidRecyclerView控制元件的使用

1、RecyclerView控制元件不在標準的庫裡面,需要先引入,引入比較簡單,點選控制元件右邊的下載按鈕即可   2、先新增一個新聞實體類,用來為新聞列表提供資料,news.java: package com.example.chenrui.common; public cl

androidRecyclerView控制元件的列表項橫向排列

本文是在上一篇文章的基礎上做的修改:android中RecyclerView控制元件的使用 1、修改列表項news_item.xml: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint.Const

AndroidTextView控制元件的singleLine廢棄解決

在Android中想實現TextView的單行顯示,很簡單的一個方法是TextView中的singleLine設定為True即可,當文字內容超過單行的時候,就會在該行行尾部新增三個省略號代替。 顯示

AndroidDatePicker控制元件用法解析

關於DatePicker這個控制元件的解析有以下幾點: 1、首先是顯示問題,在Android 3.0系統以後使用DatePicker控制元件會出現一堆和日期相關的介面,比如下圖: 有沒有發現,如果使用

Android獲取控制元件的位置

getLocationOnScree:計算該檢視在全域性座標系中的x,y值,(注意這個值是要從螢幕頂端算起,也就是索包括了通知欄的高度)//獲取在當前螢幕內的絕對座標 getLocationInWindow :計算該檢視在它所在的widnow的座標x,y值,//獲取在整個視

Android日曆控制元件的使用

一.概述 因為專案中要用到選擇日期的功能,所以特此來研究一下相關方面的知識,總結一下,也為了以後使用起來更加方便。 二.介紹 Android中自帶了兩個控制元件,DatePicker和TimePicker,分別用來選擇日期和時間的,我們看看如何使用。

React-Native開發常用的第三方控制元件持續更新

筆者簡書:https://www.jianshu.com/u/8ba7c349861d, 歡迎大家關注 2018.8.23更新: 動態修改Android的softmodule: react-native-android-keyboard-adjust    

android學習筆記:在actionBar增加控制元件

1.在AndroidManifest.xml中新增配置activity屬性 <activity android:name=".killProcess" android:label="殺殺殺" android:theme="@styl

Android在程式碼修改控制元件的位置

//這裡我用FrameLayout佈局為列,其他佈局設定方法一樣,只需改變佈局名就行 FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) photoView.getLayoutParams(); //

android studio向activity_main.xml控制元件不成功

android studio向activity_main.xml中拖控制元件不成功 android studio 自動生成activity_main.xml和content_activity.xml.此時向activity_main.xml中拖動控制元件顯示無法拖動。 解決方法:

Android 關於佈局Button控制元件正常順序出現的遮蓋其他控制元件問題

在一個相對佈局中設定著底部組合控制元件,比如:正常app的四個底部導航欄,分別用權重去等比例顯示,但是若在其中的一份比例中的相對佈局裡放置了Button和其他的自定義控制元件(包含非自定義控制元件),那麼就會出現Button覆蓋佈局中的其他控制元件的問題,不過遇到的也許不多吧

Android開發:如何在選單呼叫控制元件(如Button、TextView……)

當我們在類內定義控制元件的全域性變數時,如Button……,只能在onCreate()中初始化,這樣的控制元件變數引用在選單中不好引用,會報錯。 如果想在選單中呼叫控制元件,可以在選單中重新定義控制元件

Android在程式碼設定控制元件的寬和高

//在程式碼中設定控制元件大小的方法 private Button mbtn; mbtn = (Button) findViewById(R.id.btn_test); LayoutParams lp; lp=mbtn.getLayoutParams

android在程式碼設定控制元件的長和高

這裡介紹LinearLayout和RelativeLayout兩種佈局下的控制元件 LinearLayout.LayoutParams paramss = (LinearLayout.LayoutParams) imageview.getLayoutPar