Android Studio实现一个小说阅读App
應用目錄
- 一、基本信息
- 二、功能介紹
- 1. 主界面
- 2. 排行榜界面
- 3. 分類界面
- 4. 搜索界面
- 5. 書籍詳情界面
- 6. 閱讀界面
- 7. 相關書籍界面
- 三、類圖/時序圖/架構圖
- 四、采用技術及原因
- 1.ViewPager+Fragment的使用
- 2.RadioGroup實現導航欄
- 3.Retrofit的網絡加載框架
- 4.設置同步變量控制線程順序
- 5.將多個列表放在一個activity下
- 6.系統廣播獲取系統電量和時間
- 7.非注銷生命周期的橫豎屏切換
- 五、應用部署
- 六、運行截圖
- 七、源碼獲取
一、基本信息
本次用java語言實現的Android小說閱讀App功能非常豐富,可以在線閱讀網絡書籍,也可以加入書架,還可以在線搜索網絡小說,有大家都在搜的關鍵詞推薦、關鍵詞刷新功能、搜索歷史等。根據男生和女生用戶的使用情況,分別顯示對應的小說排行榜,包括:最熱榜、熱搜榜、潛力榜、留存榜和完結榜,點進排行榜,還分為周榜、月榜和總榜。在分類中,有玄幻、武俠、歷史、科幻等多種類別,點進某一類別,還有熱門、新書、好評和完結頂部導航欄。在閱讀小說時,可以切換日夜模式,橫豎屏切換,可以設置字體大小,還可以查看目錄。
二、功能介紹
1. 主界面
- 點擊下方圖標或左右滑動來切換書架、排行榜、分類,點擊右上角搜索圖標進入搜索界面
- 從書架點擊某本書籍進入閱讀界面
- 在排行榜處點擊左上角♂/♀圖標切換男生/女生,點擊某個排行榜進入排行榜界面
- 在分類處點擊上方按鈕切換男生/女生,點擊某個分類進入分類界面
2. 排行榜界面
- 點擊上方按鈕切換周榜/月榜/總榜
- 點擊某本書籍進入書籍詳情界面
3. 分類界面
- 點擊上方按鈕切換熱門/新書/好評/完結
- 點擊某本書籍進入書籍詳情界面
4. 搜索界面
- 在上方搜索框中輸入書名,點擊搜索按鈕進行搜索
- 點擊搜索結果中的書名跳轉到書籍詳情界面
- 點擊“大家都在搜”/“搜索歷史”中的書名直接跳轉到書籍詳情界面
5. 書籍詳情界面
- 點擊左下角“加入書架”按鈕可將當前書籍加入書架
- 點擊右下角“免費閱讀”按鈕跳轉到閱讀界面
- 點擊“同類推薦”中的書籍可跳轉到該書籍的詳情界面
- 點擊“更多”按鈕跳轉到相關書籍界面
6. 閱讀界面
- 上下滑動進行閱讀,左右滑動切換章節
- 點擊屏幕中部,屏幕底部出現菜單:夜間/日間、橫屏/豎屏、設置、目錄
- 點擊“夜間/日間”切換到夜間/日間模式
- 點擊“橫屏/豎屏”切換到橫屏/豎屏模式
- 點擊“設置”出現字體大小調整界面,點擊“A-”減小字體大小,點擊“A+”增大字體大小,點擊屏幕其他部分返回
- 點擊“目錄”出現書籍目錄,點擊某個章節可跳轉到該章節,點擊屏幕其他部分返回
7. 相關書籍界面
- 點擊相關書籍列表中的書籍,跳轉到該書籍的詳情界面
三、類圖/時序圖/架構圖
項目結構圖如下,代碼一共分為6個部分,根據包名來分別介紹主要功能。
2.DataBase:創建、操作數據庫和表的函數。
5. RecycleView:包含和recylerview相關的類、適配器和基礎的viewholder。
四、采用技術及原因
1.ViewPager+Fragment的使用
原因
每一個Fragment對應一個界面,使用此技術來顯示界面,能夠更流暢地在各個界面之間完成切換,比如主界面的書架、排行榜、分類就是利用3個Fragment來顯示的,再增加RadioGroup作為導航欄,就能夠實現類似于微信主界面一樣的效果了,各個界面之間切換流暢,具有美感
方法
使用的方法就是在布局中添加ViewPager:
<android.support.v4.view.ViewPagerandroid:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:overScrollMode="never"android:scrollbars="none"/>再在Activity中設置Adapter、FragmentList:
private ViewPager viewPager; private List<Fragment> fragmentList = new ArrayList<>(); private TabFragmentStatePagerAdapter fragmentPagerAdapter;//初始化Fragment //... fragmentList.add(bookShelfFragment); fragmentList.add(rankingFragment); fragmentList.add(categoryFragment);設置ViewPager:
viewPager.setOnPageChangeListener(new MyPagerChangeListener()); fragmentPagerAdapter = new TabFragmentStatePagerAdapter(getSupportFragmentManager(), fragmentList); viewPager.setAdapter(fragmentPagerAdapter); viewPager.setCurrentItem(0); viewPager.setOffscreenPageLimit(2);2.RadioGroup實現導航欄
原因
只有單純的滑動切換Fragment給用戶的提示信息還不夠,界面也不夠美觀,Fragment的分離也不夠明顯。實現一個導航欄能夠讓用戶明確每一個Fragment的作用。這也是當前許多主流App的做法。
方法
利用RadioButton的android:button="@null"這個屬性來把圓形按鈕去掉,再利用android:drawableTop="@mipmap/bookshelf"屬性來給RadioButton顯示不同的圖片:
<RadioButtonstyle="@style/BottomRB"android:drawableTop="@mipmap/bookshelf"/> <style name="BottomRB"><item name="android:button">@null</item><item name="android:textColor">@drawable/selector_tab_text_color</item> </style>在RadioButton被選中時,還需要設置字體的顏色以及改變圖片顏色,以達到被選中的效果。這可以在RadioGroup的監聽事件中來實現,注意需要設置圖片的大小,否則會不適配,設置的方法為:
RadioButton的選中與ViewPager切換幀需要結合起來,才能達到導航欄的效果。
在切換選中的RadioButton時,要修改ViewPager當前顯示的幀;在切換ViewPager顯示的幀時,要修改被選中的RadioButton。
3.Retrofit的網絡加載框架
其底層使用OKHttp封裝,支持rxjava
原因
- 解耦,減少API接口定義和API接口使用的耦合
- 包含許多注解,簡化代碼,方便使用
- 支持同步、異步、RxJava
- 可以使用不同工具解析數據,如json、xml
- 請求速度快
方法
接口類:
@GET("/ranking/gender") Call<AllRankingObj> getAllRanking(); OkHttpClient build = new OkHttpClient.Builder().connectTimeout(2, TimeUnit.SECONDS).readTimeout(2, TimeUnit.SECONDS).writeTimeout(2, TimeUnit.SECONDS).build();// 用于API訪問 Retrofit retrofitForApi = new Retrofit.Builder().baseUrl(ApiUrl)// 設置json數據解析器.addConverterFactory(GsonConverterFactory.create())// RxJava封裝OkHttp的Call函數,本質還是利用OkHttp請求數據.addCallAdapterFactory(RxJavaCallAdapterFactory.create()).client(build).build();4.設置同步變量控制線程順序
原因
當輸入速度特別快時,有的線程清空了list,而有的線程正在調用list里的元素,這樣會發生訪問異常,需要設置同步變量使得同一時刻只有一個線程在運行。
方法
flag = true; //用于同步問題的布爾變量 if (!s.equals("") && flag) {new Thread(new Runnable() {@Overridepublic void run() {flag = false;...}} }5.將多個列表放在一個activity下
原因
將不同列表放入多個activity里可以使得界面布局簡單,但是帶來的問題是需要增加許多activity之間的通信,增加了跳轉的復雜度,而將列表放入同一個activity里方便跳轉時的信息傳遞。
方法
//設置可見 if (!isSubmit) {if (s.equals("")) {initialLayout.setVisibility(View.VISIBLE);searchLayout.setVisibility(View.GONE);}else {initialLayout.setVisibility(View.GONE);searchLayout.setVisibility(View.VISIBLE);fuzzyList.setVisibility(View.VISIBLE);resultList.setVisibility(View.GONE);} }6.系統廣播獲取系統電量和時間
原因
用戶進入閱讀界面時是全屏閱讀,頂部狀態欄會消失,那么需要有個信息欄來簡要顯示系統電量和時間
方法
7.非注銷生命周期的橫豎屏切換
原因
方法
切換到橫屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);切換到豎屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);五、應用部署
下載好源代碼之后,通過android studio部署到手機或模擬器即可,或直接安裝report目錄下的apk文件。對android studio版本沒有具體要求。
注:應用開發測試環境的sdk版本最低為22,最高為28。六、運行截圖
1、運行項目,進入主界面,顯示的是本地書架,此時我們已經添加了四本書籍。
2、第三本看完了,我們長按將它刪除。
3、點擊右上角圖標,進入搜索界面,輸入作者或者書名查找,底下是大家都在搜的關鍵詞,可以刷新。還有搜索歷史,可以刪除。
4、進入排行榜,可以選擇性別,然后查看各排行,比如最熱榜、完結榜。
5、進入具體的榜單后,頂部導航欄還分為周榜、月榜和總榜。
6、點擊任意書籍,進入詳情界面,有閱讀人次、留存率、簡介和同類推薦等。
7、選擇加入書架,就將書籍放到了書架中。選擇免費閱讀,api當前沒有該書的版權,推薦我們直接下載軟件看小說。
8、別著急退出,點擊屏幕中央,彈出底部功能菜單,可以設置日夜模式、很豎屏切換和字體大小。
9、進入分類導航欄,這里有幾百萬本書籍,真的看不過來了。
10、點進任意分類,會進入具體分類界面,顯示頂部導航欄和書籍列表。
11、回到書架導航欄,可以看到剛剛添加進來的所有書籍。
七、源碼獲取
| 1?? 點擊直接下載 Android Studio 小說閱讀App |
| 2??關注公眾號《 萌新加油站 》,后臺回復: 小說 |
| Android Studio實現外賣訂餐系統 |
| Android Studio實現考試管理系統 |
| Android Studio實現天氣預報系統 |
| Android Studio實現圖書館訂座系統 |
| Android Studio實現前后臺分離的選課系統 |
生命里最重要的事情是要有個遠大的目標,并借助才能與堅持來完成它。——歌德
總結
以上是生活随笔為你收集整理的Android Studio实现一个小说阅读App的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随心录文字,你需要的是一只汉王蓝牙速录笔
- 下一篇: CVSS3.0打分学习