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