av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

AndroidStudio中用ListFragments創(chuàng)建相冊(cè)Gallery

這是關(guān)于在Android Studio中通過(guò) fragments 進(jìn)行相機(jī)方面開(kāi)發(fā)的五篇系列文章的第二篇。如果你還沒(méi)有把我放在 GitHub 上的范例程序克隆下來(lái),那么請(qǐng)先去這里獲取***代碼。本文主要包含的是 “SimplePhotoGalleryListFragment” 這個(gè) Fragment。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、蓮花ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的蓮花網(wǎng)站制作公司

注意:本范例中所涉及的 List Fragment 的用法,可以在 List Fragments 這篇文章中找到詳細(xì)的講解。

AsyncTaskLoaders 以及 Fragments

加載整個(gè)圖片庫(kù)到List是一個(gè)運(yùn)算量比較密集,強(qiáng)度很高任務(wù)。因此,我們希望利用 Android 提供的AsyncTaskLoader 通過(guò)異步加載解決這個(gè)問(wèn)題。在這里,我已經(jīng)寫(xiě)好了一個(gè)自定義AsyncTaskLoader工具類(lèi)用加載圖庫(kù)中圖片的。我把它命名為:PhotoGalleryImageProvider,可以在源碼中找到。

Fragments 提供了一種特殊的接口給異步任務(wù)的 Loader 以便于自動(dòng)觸發(fā)異步加載任務(wù)。我們的圖庫(kù)列表在Fragment中看起來(lái)如下面的代碼:

 
 
 
  1. @Override 
  2. public void onCreate(Bundle savedInstanceState) { 
  3.     super.onCreate(savedInstanceState); 
  4.   
  5.     // Create an empty loader and pre-initialize the photo list items as an empty list. 
  6.     Context context = getActivity().getBaseContext(); 
  7.   
  8.     // Set up empty mAdapter 
  9.     mPhotoListItem = new ArrayList() ; 
  10.     mAdapter = new PhotoAdapter(context, 
  11.             R.layout.photo_item, 
  12.             mPhotoListItem, false); 
  13.   
  14.     // Prepare the loader.  Either re-connect with an existing one, 
  15.     // or start a new one. 
  16.     getLoaderManager().initLoader(0, null, this); 

請(qǐng)注意***的這一行:

 
 
 
  1. getLoaderManager().initLoader(0, null, this); 

這一行的作用就是自動(dòng)啟用 AsyncLoader。AsyncLoader的相關(guān)代碼放在這個(gè)Class文件的后面。

 
 
 
  1. /** 
  2.  * Loader Handlers for loading the photos in the background. 
  3.  */ 
  4. @Override 
  5. public Loader onCreateLoader(int id, Bundle args) { 
  6.     // This is called when a new Loader needs to be created.  This 
  7.     // sample only has one Loader with no arguments, so it is simple. 
  8.     return new PhotoGalleryAsyncLoader(getActivity()); 

每次后臺(tái)任務(wù)成功獲取到圖庫(kù)中的圖片時(shí),則會(huì)回調(diào)下面這個(gè)函數(shù):

 
 
 
  1. @Override 
  2. public void onLoadFinished(Loader loader, List data) { 
  3.     // Set the new data in the mAdapter. 
  4.     mPhotoListItem.clear(); 
  5.   
  6.     for(int i = 0; i < data.size();i++){ 
  7.         PhotoItem item = data.get(i); 
  8.         mPhotoListItem.add(item); 
  9.     } 
  10.   
  11.     mAdapter.notifyDataSetChanged(); 
  12.     resolveEmptyText(); 
  13.     cancelProgressDialog(); 

其中,PhotoItem(用作給 Adapter 存儲(chǔ)數(shù)據(jù))的數(shù)組包含了指向所有圖庫(kù)中圖片的縮略圖以及全尺寸圖片的URL。一旦獲取這些數(shù)據(jù),Adapter必定會(huì)通過(guò) “notifyDataSetChanged” 回調(diào)來(lái)通知出去,從而刷新當(dāng)前的圖片列表。

通過(guò)游標(biāo)(cursor)來(lái)獲取縮略圖

之前我提到過(guò),我已經(jīng)提供了一個(gè)工具類(lèi)可以用游標(biāo)方便的去獲取圖庫(kù)中圖片的縮略圖,這個(gè)工具類(lèi)叫做“PhotoGalleryImageProvider”。這個(gè)類(lèi)的主要用法如下:

 
 
 
  1. /** 
  2.      * Fetch both full sized images and thumbnails via a single query. 
  3.      * Returns all images not in the Camera Roll. 
  4.      * @param context 
  5.      * @return 
  6.      */ 
  7.     public static List getAlbumThumbnails(Context context){ 
  8.   
  9.         final String[] projection = {MediaStore.Images.Thumbnails.DATA,MediaStore.Images.Thumbnails.IMAGE_ID}; 
  10.   
  11.         Cursor thumbnailsCursor = context.getContentResolver().query( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, 
  12.                 projection, // Which columns to return 
  13.                 null,       // Return all rows 
  14.                 null, 
  15.                 null); 
  16.         ... 
  17.   
  18.         return result; 
  19.     } 

直接用Android 提供的Cursors 去后臺(tái)獲取圖片是比較簡(jiǎn)單的一種用法。另一種高級(jí)的用法則是使用 CursorLoader 來(lái)操作Cursor。CursorLoader 內(nèi)建了一個(gè) AsyncTaskLoader 可以用來(lái)自動(dòng)處理后臺(tái)的加載進(jìn)程。由于需要同時(shí)渲染獲取到圖片的縮略圖和完整尺寸的圖片,所以盡管使用帶有CursorLoader的AsyncTask 也可以得到同樣的結(jié)果,但我還是選擇了寫(xiě)一個(gè)自定義的Task Loader。

除了這些必須了解的內(nèi)容,你現(xiàn)在可以獲取范例代碼然后好好享受學(xué)習(xí)的旅程了!

相關(guān)連接

  • List all camera images (用作分部創(chuàng)建cursor loader類(lèi))

原文鏈接:airpair   翻譯:zerob13

譯文鏈接:http://blog.jobbole.com/73138/


標(biāo)題名稱(chēng):AndroidStudio中用ListFragments創(chuàng)建相冊(cè)Gallery
URL網(wǎng)址:http://uogjgqi.cn/article/dhgohhh.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流