開源android豆瓣電影閱讀器

來源:互聯網
上載者:User

標籤:

學習andorid開發有一段時間了,做了個小應用--豆瓣電影閱讀器,作為這一階段學習的一個總結。當前實現了基本的閱讀器功能,更多豐富的特性,後續會進一步添加。

代碼託管在github上,https://github.com/zhaoyu87/DouBan,需要的同學可以下載

應用主要分為兩塊:

  1. 資料內容,http訪問豆瓣api擷取JSON格式的電影資訊

  2. 顯示介面,使用了一個ListView來顯示電影列表,和一個WebView來顯示電影詳情,如下所示:

 

1. 資料內容,http訪問豆瓣api擷取JSON格式的電影資訊

 app中使用的豆瓣api說明文檔見http://developers.douban.com/wiki/?title=api_v2。

應用中使用了top250電影的api來擷取電影列表資訊api.douban.com/v2/movie/top250?count=20&start=0,後面可以跟參數count和start以及apikey

需要被解析的json資料分別為top250、simple subject、rating和image,代碼中分別體現為下面所示幾個檔案

2. 顯示介面,使用了一個ListView來顯示電影列表,和一個WebView來顯示電影詳情

顯示介面只使用了一個Top250ListActivity,電影列表和電影詳情分別使用Top250ListFragment和MovieDetailFragment兩個fragment實現,這裡選擇使用fragment而不是activity主要是出於對靈活性的考慮,便於後面更改顯示效果,比如改為view pager顯示,或者需要支援pad裝置

 

應用對象圖解如上所示

整個應用的結構並不複雜,不再做詳細解釋。直說重要的幾點:

1.Top250ListAdapter中通過AsyncTask來建立httpClient通過httpGet訪問服務端擷取電影列表,需要注意的是這裡設定了httpGet的user-agent為瀏覽器,否則無法正常擷取資訊

            HttpClient httpClient = new DefaultHttpClient();            HttpGet httpGet = new HttpGet(Urls.BASE + Top250.APPEND_URL + "?count=" + count + "&start=" + start + "&apikey=0537d7e598d847b20fa787b0ca88d716");            httpGet.setHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");

2.Top250ListFragment到MovieDetailFragment的跳轉過程實現:Top250ListFragment中定義了Callback介面,由Top250ListActivity實現該介面來進行fragment切換,不直接在Top250ListFragment中實現fragment切換,保持兩個fragment的獨立

    public interface Callbacks {        void onTop250ItemClicked(SimpleSubject subject);    }

3.MovieDetailFragment通過如下newInstance方法建立,有利於fragment的封裝性

    public static MovieDetailFragment newInstance(String url) {        Bundle bundle = new Bundle();        bundle.putString(MOVIE_DETAIL_URL, url);        MovieDetailFragment fragment = new MovieDetailFragment();        fragment.setArguments(bundle);        return fragment;    }

4.下載圖片使用了開源架構Android-Universal-Image-Loader(https://github.com/nostra13/Android-Universal-Image-Loader),支援多線程非同步載入網路、本地圖片,支援圖片記憶體緩衝、檔案系統快取。推薦一個部落格http://blog.csdn.net/xiaanming/article/details/26810303

注意,如果需要SD卡緩衝的話,需要增加許可權

<manifest>    <uses-permission android:name="android.permission.INTERNET" />    <!-- Include next permission if you want to allow UIL to cache images on SD card -->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    ...</manifest>

5.list view item體驗了一下Android 5.0 material design中的CardView,CardView繼承自FrameLayout類,可以在一個卡片布局中一致性的顯示內容,卡片可以包含圓角和陰影。

list_item_top250.xml

<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/card_view"    app:cardCornerRadius="8dp"    android:layout_width="match_parent"    android:layout_height="120dp">    ......</android.support.v7.widget.CardView>

匯入支援庫android.support.v7.widget.CardView,需要在build.gradle dependencies中添加,如下

dependencies {    compile fileTree(include: [‘*.jar‘], dir: ‘libs‘)    compile ‘com.android.support:appcompat-v7:21.0.3‘    compile ‘com.android.support:cardview-v7:21.+‘    compile files(‘libs/universal-image-loader-1.9.3.jar‘)}

上面就是這個小應用的簡單介紹,和大家分享一下,共同學習。如果發現任何bug或者有建議歡迎留言

 

開源android豆瓣電影閱讀器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.