开源android豆瓣电影阅读器

学习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-Loaderhttps://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或者有建议欢迎留言

时间: 2024-10-12 15:05:45

开源android豆瓣电影阅读器的相关文章

(android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇

从写第一篇今日头条高仿系列开始,到现在已经过去了1个多月了,其实大体都做好了,就是迟迟没有放出来,因为我觉得,做这个东西也是有个过程的,我想把这个模仿中一步一步学习的过程,按照自己的思路写下来,在根据碰到的知识点和问题,并且罗列出这些东西的知识点和使用方法.如果你单纯的把做好的一个DEMO拿去改改用用,那样,你永远不知道里面用到的内容是涉及到什么知识点,用什么方法实现,那样就没有多少提升价值而言了. 近期都是在通过开发文档把以前的一些东西重新过一遍,看好多网友都催促想要新版本的,那我就在这里先把

电子书及阅读器Demo

电子书阅读器(Kindle,电子纸技术.LCD.电子墨水技术等: 亚马逊/当当网站)  电子书产业可分5大环节:内容供应商.数字格式制作商.内容流通服务平台.传输平台以及终端阅读器产品. 全球电子书市场上,亚马逊占据第一位置,紧随其后的是索尼,而中国电子书领先企业汉王科技位居第三.在中国,汉王已经占据了该领域核心地位. - 硬件 + 软件 + 内容(书籍,纸质书电子书) 电子书的主要格式有PDF.TXT.EXE.CHM.UMD.PDG.JAR.PDB.BRM.EPUB.HLP.HTML.LIT.

Android阅读器的思路(一)

最近工作业务中遇到了,Android阅读器的需求.面临的第一个问题就是,如何根据屏幕的大小,将一本小说分成每一页需要显示的内容.简单来说,就是把一整本小说的String变成每一页恰好可以显示的String组成一个String[]. 首先,我们要取得显示区域的宽高——width,height. 然后,计算出,在当前字体大小下,一屏可以显示的行数rowCount. 接下来,设置字体大小.对齐方式 mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.se

Android简单的编写一个txt阅读器(没有处理字符编码),适用于新手学习

本程序只是使用了一些基本的知识点编写了一个比较简单粗陋的txt文本阅读器,效率不高,只适合新手练习.所以大神勿喷. 其实想到编写这种程序源自本人之前喜欢看小说,而很多小说更新太慢,所以本人就只能找一个完本的.txt小说下载下来,有没有网络都可以看,当然现在不看那玩意了. 废话就不说了,程序中使用到的有4个类,5个xml文件,其中3个布局文件.String.xml.AndroidManifest.xml. 先看效果图吧(虽然很丑):     下面就上代码吧,本人都注释好了,由于本人技术还不行,注释

Android IT资讯网络阅读器应用源码

这个是Android IT资讯网络阅读器应用,也是一款通过jsoup解析Html获取内容的网络阅读器,和前面的其实是类似的,也是大学时期闲暇完成,对照CSDN的Web页面元素设计进行解析提取内容,核心功能就是使用jsoup解析.以下是相关截图. 源码下载: http://code.662p.com/view/9746.html 运行截图 运行截图 运行截图 详细说明:http://android.662p.com/thread-6090-1-1.html

将批量下载的博客导入到手机后,通过豆约翰博客阅读器APP(Android手机)进行浏览,白字黑底,保护眼睛,图文并茂。

首先下面演示的博文来自于以下地址:http://www.douban.com/note/423939291/ 需要先通过博客备份专家将导出的博文导入到手机(还不会用的朋友请先阅读http://www.douyuehan.com/space/douyuehan/Blog1/Post/259.aspx),然后通过豆约翰开发的手机博客阅读器APP进行阅读. 先看一下效果 大家可以看到,黑底白字,非常省眼,比用博客备份专家导出成PDF看要好得多,而且同样图文并茂. 接下来,豆约翰就向朋友们来讲解一下豆约

Android网络阅读器_jsoup解析应用

这是一款通过jsoup解析Html获取内容的网络阅读器,大学时期闲暇完成,对照CSDN的Web页面元素设计进行解析提取内容,核心功能就是使用jsoup解析.以下是相关截图: 核心解析代码: package com.weiyi.itreader.util; import java.util.ArrayList; import java.util.List; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jso

基于Android小说阅读器滑动效果的一种实现

看过小说都知道小说阅读器翻页有好多种效果,比如仿真翻页,滑动翻页,等等.由于某种原因,突然想写一个简单点的滑动翻页效果.在这里写出来也没有什么意图,希望大家可以根据这个效果举一反三,写出其他的效果.图就不上了. 下面是代码:大家理解onTouch事件即可 package com.example.testscroll.view; import android.content.Context; import android.util.AttributeSet; import android.view

android rss阅读器开发一点小技巧

这几天一直在学习开发Rss阅读器,遇到一个很坑的问题,InputSource这里总是出错.弄了好久,终于让我找到一个解决方法----看代码: new Thread(){ @Override public void run() { try { URL url = new URL(RSS_URL); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser();